当前位置: 首页 > news >正文

支持微信支付的网站开发运维工程师主要做什么

支持微信支付的网站开发,运维工程师主要做什么,php做电商网站有那几个模块,昆明网站开发价格在定义测试时#xff0c;JUnit 4有一个很大的弱点#xff1a;它必须在编译时发生。 现在#xff0c;JUnit 5将解决此问题#xff01; Milestone 1 刚刚发布 #xff0c;并带有全新的动态测试#xff0c;该动态测试允许在运行时创建测试。 总览 本系列中有关JUnit 5的其他… 在定义测试时JUnit 4有一个很大的弱点它必须在编译时发生。 现在JUnit 5将解决此问题 Milestone 1 刚刚发布 并带有全新的动态测试该动态测试允许在运行时创建测试。 总览 本系列中有关JUnit 5的其他文章 设定 基本 建筑 扩展模型 条件 注射 动态测试 … 本系列基于预发行版本Milestone 1 当然可以随时更改。 发布新的里程碑或一般可用性版本时帖子将更新。 您将在此处阅读的大部分内容和更多内容都可以在新兴的JUnit 5用户指南中找到 该链接已链接到Milestone 1版本–您可以在此处找到最新版本。 我在这里显示的代码示例可以在GitHub上找到 。 静态测试 JUnit 3通过解析方法名称并检查它们是否以测试开头来识别测试。 JUnit 4利用了后来的注解并引入了Test这给了我们更多的自由。 这两种技术共享相同的方法测试是在编译时定义的。 但是事实证明这是非常有限的。 例如考虑一种常见情况即应该对多种输入数据执行相同的测试在这种情况下应针对许多不同点 void testDistanceComputation(Point p1, Point p2, double distance) {assertEquals(distance, p1.distanceTo(p2)); } 我们有什么选择 最直接的方法是创建许多有趣的点然后在循环中调用我们的测试方法 Test void testDistanceComputations() {ListPointPointDistance testData createTestData();for (PointPointDistance datum : testData) {testDistanceComputation(datum.point1(), datum.point2(), datum.distance());} } 但是如果这样做JUnit会将循环视为单个测试。 这意味着仅在第一个失败之前执行测试报告将受到影响并且工具支持通常低于标准。 有几个JUnit 4功能和扩展可解决此问题。 它们或多或少都可以工作但通常仅限于特定的用例 Theories 难以使用 Parameterized 并且通常需要运行程序值得称赞的JUnitParams 。 原因是它们都受到相同的限制JUnit 4确实不支持在运行时创建测试。 使用lambda创建测试也是如此。 有些人想定义这样的测试 class PointTest {Distance To Origin - {Point origin Point.create(0,0);Point p Point.create(3,4);assertEquals(5, origin.distanceTo(p));}} 当然这只是一个理想选择-它甚至无法在Java中进行编译。 尽管如此看到我们能达到多近还是很有趣的。 las也无法静态标识各个lambda因此此处也有相同的限制。 但是如果JUnit 5没有提出解决方案我不会写所有这些内容进行动态测试以解决问题 发布时间由NASA戈达德太空飞行中心在CC-BY-SA 2.0 动态测试 从最近开始JUnit 5代码库就采用了一种新类型和一种新注释它们共同解决了我们的问题。 首先有DynamicTest 它是测试的简单包装。 它有一个名称并保存构成测试主体的代码。 后者以Executable的形式发生就像Runnable但是可以抛出任何Throwable 可格式化的命名。 它是使用静态工厂方法创建的 public static DynamicTest dynamicTest(String name, Executable test); 然后是TestFactory 可以注释方法。 这些方法必须返回动态测试的Iterator Iterable或Stream 。 这当然不能在编译时强制执行因此如果我们返回其他内容JUnit将在运行时发出barf。 很容易看出他们是如何合作的 当寻找Test方法时JUnit还将发现TestFactory方法。 在构建测试树时它将执行这些方法并将生成的测试添加到树中。 最终将执行测试。 因此我们能够在运行时动态创建测试 TestFactory ListDynamicTest createPointTests() {return Arrays.asList(DynamicTest.dynamicTest(A Great Test For Point,() - {// test code}),DynamicTest.dynamicTest(Another Great Test For Point,() - {// test code})); } 让我们看看如何使用它来解决我们上面描述的问题。 要创建参数化测试我们执行与之前非常相似的操作 TestFactory StreamDynamicTest testDistanceComputations() {ListPointPointDistance testData createTestData();return testData.stream().map(datum - DynamicTest.dynamicTest(Testing datum,() - testDistanceComputation(datum.point1(), datum.point2(), datum.distance()))); } 与上面所做的操作的关键区别在于我们不再直接执行testDistanceComputation 。 取而代之的是我们为每个数据创建一个动态测试这意味着JUnit将知道这些测试很多而不仅仅是一个。 在这种情况下我们可能会使用其他方法来生成动态测试 TestFactory StreamDynamicTest testDistanceComputations() {return DynamicTest.stream(createTestData().iterator(),datum - Testing datum,datum - testDistanceComputation(datum.point1(), datum.point2(), datum.distance())); } 在这里我们将测试数据stream 然后告诉它如何从中创建名称和测试。 所以你怎么看 也许符合“ JUnit 5将这些作为单独的测试来对待但是从语法上来看仍然很麻烦”的思路吗 好吧至少我是这样认为的。 该功能很好但有点笨拙。 但这只是里程碑1因此有足够的时间进行改进。 也许扩展可以提供一种更舒适的方式来创建动态测试但是我不太清楚如何。 我想 新的扩展点会有所帮助。 Lambda测试 好的让我们看看我们距离备受期待的lambda测试有多近。 现在没有为此明确创建动态测试因此我们必须进行一些修改。 这种修补是错误的受Jens Schauder 关于JUnit 5的演示之一“启发”。谢谢Jens 动态测试需要一个名称和一个可执行文件用lambda创建后者听起来很合理。 为了能够做到这一点我们需要一个目标即lambda被分配给的目标。 想到一个方法参数... 但是该方法会做什么 显然它应该创建一个动态测试然后呢 也许我们可以将该测试转储到某个地方然后让JUnit进行测试 public class LambdaTest {private final ListDynamicTest tests new ArrayList();// use lambda to create the Executablepublic void registerTest(String name, Executable test) {tests.add(DynamicTest.dynamicTest(name, test));}TestFactoryvoid ListDynamicTest tests() {return tests;}} 好的这看起来很有希望。 但是我们从哪里获得LambdaTest的实例 对于我们的测试类最简单的解决方案是简单地对其进行扩展然后重复调用registerTest 。 如果这样做的话我们可能更愿意使用一个较短的名称。 我们还可以使其受到保护 // dont do this at home! protected void λ(String name, Executable test) {tests.add(DynamicTest.dynamicTest(name, test)); } 看来我们要到达那里。 剩下的就是调用λ 并且唯一明显的方法是从测试类的构造函数内部进行 class PointTest extends LambdaTest {public PointTest() {λ(A Great Test For Point, () - {// test code})}} 我们已经完成修补工作。 为了进一步发展我们必须开始黑客攻击。 有没有听说过双括号初始化 这是一个有点奇怪的功能它创建一个匿名子类并在新类的构造函数中执行给定的代码。 有了它我们可以走得更远 class PointTest extends LambdaTest {{λ(A Great Test For Point, () - {// test code});}} 如果我们真的很渴望我们可以删除另外两个符号。 有了这个怪异的技巧 我们现在受到Benji Weber的启发我们可以通过反射来确定lambda的参数名称并将其用作测试的名称。 要利用这一点我们需要一个新的接口并且必须稍微更改LambdaTest ::λ FunctionalInterface // the interface we are extending here allows us // to retrieve the parameter name via prettyName() // (the black magic is hidden inside that method; // look at MethodFinder and NamedValue in Benjis post) public interface NamedTest extends ParameterNameFinder {void execute(String name); }protected void λ(NamedTest namedTest) {String name namedTest.prettyName();Executable test () - namedTest.execute(name);tests.add(DynamicTest.dynamicTest(name, test)); } 综上所述我们可以创建如下测试 class PointTest extends LambdaTest {{λ(A_Great_Test_For_Point - {// test code});}} 你怎么看 所有这些黑客值得吗 老实说我不介意让我的IDE生成测试方法样板所以我的回答是“否”。 但这是一个有趣的实验。 :) 生命周期 动态测试的当前实现是故意的。 这种显示方式之一是它们没有集成到生命周期中。 从用户指南中 这意味着对于动态测试不会执行BeforeEach和AfterEach方法及其对应的扩展回调。 换句话说如果您在lambda表达式中访问来自测试实例的字段以进行动态测试则这些字段将不会由回调方法或由同一TestFactory方法生成的动态测试在执行之间的扩展名进行重置。 不过已经有一个问题可以解决 。 反射 那我们看到了什么 到目前为止JUnit只知道在编译时声明的测试。 JUnit 5具有动态测试的概念动态测试是在运行时创建的由名称和保存测试代码的可执行文件组成。 到此为止我们已经看到了如何创建参数化测试以及如何使用lambda来以更现代的风格定义测试。 你怎么看 渴望尝试吗 翻译自: https://www.javacodegeeks.com/2016/07/junit-5-dynamic-tests.html
http://www.pierceye.com/news/400346/

相关文章:

  • 国际网站哪里做vs2010 c 建设网站
  • 企业网站更新什么内容永城做网站
  • wordpress 众筹网站模板html5风格网站特色
  • 服装设计参考网站重庆景点排名
  • 网至普的营销型网站建设扬州网站商城建设价格表
  • 成品网站价格表简答网站内容建设的时候内链重要性
  • 视频链接生成器某网站搜索引擎优化
  • flash网站案例vi设计是设计什么
  • ip查询网站备案查询企业网络营销推广平台
  • 多城市网站建设免费制作小程序的平台
  • 郑州网站建设出名吗?wordpress获取登录密码
  • 网站建设论文的开题报告重庆市工程建设信息
  • 商务网站设计方案门户网站的优点
  • 河津网站制作wampserver做的网站
  • 洛阳专业网站设计开发制作建站公司零陵区住房和城乡建设局网站
  • 在哪里可以学做网站游戏开发大亨下载
  • 找人做ps的网站无锡 做公司网站
  • 云速建站可以建个人网站吗wordpress仿站难吗
  • 如何取外贸网站域名凡科h5制作教程
  • 蜘蛛不抓取网站的原因中山h5网站建设
  • 百度免费推广网站建网站用的免费软件
  • 网站建设西安哪里好广州做企业网站的公司
  • 汉中市网站建设爱墙 网站怎么做
  • 失物招领网站开发项目需求分析搭建外文网站
  • 免费网站空间免备案自学php做网站
  • 南宁网站建设nnit30郴州市第一职业中专
  • 想开个影视网站 那有做的莱芜信息平台
  • js做网站登录有服务器了怎么做网站
  • 郑州餐饮网站建设哪家好零基础网站建设教学在哪里
  • 讲述做网站的电影建设工程公司名字大全