搜索引擎优化的实验结果分析,站长工具seo查询,长春网站制作培训,如何在自己电脑上建设网站spock测试了解Spock 2.0 M1#xff08;基于JUnit 5#xff09;的期望#xff0c;如何在Gradle和Maven中迁移到它以及为什么报告发现的问题很重要#xff1a;#xff09;。  重要说明 。 我绝对不建议您永久将您的现实项目迁移到Spock 2.0 M1#xff01; 这是2.x的第一个基于JUnit 5的期望如何在Gradle和Maven中迁移到它以及为什么报告发现的问题很重要。   重要说明 。 我绝对不建议您永久将您的现实项目迁移到Spock 2.0 M1 这是2.x的第一个预发行版未完成API旨在收集与内部Spock迁移到JUnit Platform有关的用户反馈。   这篇博客文章旨在鼓励您进行项目到Spock 2.0的测试迁移查看开始失败的原因修复它如果由测试引起或报告如果它是Spock本身的回归。 这样一来在Spock方面就有可能在Milestone 2之前改进代码库。除了对FOSS项目:-)做出贡献之外您的收益将是对所需更改的意识保持在一边 Spock 2.0更成熟后就可以迁移了。   我计划在下一个Spock 2版本可用时更新此博客文章。   由JUnit Platform提供支持  Spock 2.0 M1的主要变化是向JUnit 5的迁移确切地说是使用JUnit Platform 1.5是JUnit 5的一部分而不是JUnit 4Runner API执行测试。 这非常方便因为应该在支持JUnit平台的任何地方IDE构建工具质量工具等自动识别和执行Spock测试。 另外平台本身提供的功能例如并行测试执行也应该最终也适用于Spock。   要将Spock 2引入Gradle项目需要修改Spock版本  testImplementation( org.spockframework:spock-core:2.0-M1-groovy-2.5 )   并通过JUnit平台激活测试执行  test { useJUnitPlatform()  }   另一方面对于Maven仍然需要切换到Never Spock版本   dependency   groupId org.spockframework/ groupId   artifactId spock-core/ artifactId   version 2.0-M1-groovy-2.5/ version   scope test/ scope   / dependency    但这就是全部。 如果找到了junit-platform-engineSpock 2的传递依赖项则Surefire插件如果使用版本3.0.0默认执行JUnit Platform测试。   可以从GitHub获得Gradle i Maven的最小工作项目。  其他变化  由于具有向JUnit Platform迁移的巨大变化Spock 2.0 M1中的其他变化数量有限从而使查找潜在的回归原因变得容易一些。 作为迁移本身的副作用所需的Java版本是8。   此外所有参数化测试都会最终自动“展开”。 但是那太好了如Spock 1.x的spock-global-unroll所知当前没有办法 “滚动”特定的测试。   在发行说明中可以找到其他一些更改例如暂时禁用的SpockReportingExtension 。   预计会有更多可能是重大的更改合并到里程碑2中。  JUnit 4规则问题  使用JUnit 4 Rule 或ClassRule 的测试可能会失败并显示一条错误消息提示未在测试之前创建/初始化所请求的对象例如NullPointerException或IllegalStateException: the temporary folder has not yet been created 或者之后没有被验证/清除例如来自AssertJ的软断言。 JUnit平台不再支持Rules API。 但是为了TemporaryFolder迁移在基于Spock的集成测试中可能经常使用TemporaryFolder 有一个专用的spock-junit4在内部将JUnit 4规则包装到Spock扩展中并在Spock的生命周期中执行它。 由于它是作为全局扩展实现的因此唯一需要添加的就是另一个依赖项。 在Gradle中  testImplementation org.spockframework:spock-junit4:2.0-M1-groovy-2.5   或在Maven中   dependency   groupId org.spockframework/ groupId   artifactId spock-junit4/ artifactId   version 2.0-M1-groovy-2.5/ version   scope test/ scope   / dependency    这使迁移更加容易但是最好考虑切换到本地Spock副本如果可用/可行。  其他问题和局限性  Spock 2.0 M1仅使用Groovy 2.5.8进行编译和测试。 从M1开始当前在运行时阻止使用Groovy 3.0执行。 不幸的是除了关于不兼容的Groovy版本的明确错误消息外只有一个非常神秘的错误消息  Could not instantiate global transform class org.spockframework.compiler.SpockTransform specified at  jar: file :/... .0-M1-groovy-2.5.jar! /spock-core-2 .0-M1-groovy-2.5.jar! /META-INF/services/org .codehaus.groovy.transform.ASTTransformation  because of exception java.lang.reflect.InvocationTargetException   它已被报告 应通过M2进行增强。   令人遗憾的是仅对Groovy 2.5的限制减少了使用Groovy 3进行实验的人们的潜在反馈该反馈非常接近稳定版本RC2截至2019/2020。 由于许多Spock测试仅适用于Groovy 3特别是某些极端情况因此特别不方便。 Spock 2在进入决赛之前可能会被调整为Groovy 3中的更改或者至少会取消上述硬性限制。 同时需要使用快照版本2.0-groovy-2.5-SNAPSHOT 已禁用该检查测试Groovy 3支持。  摘要  阅读这篇文章后要做的动作很简单。 尝试在您的项目中临时使用Spock 2.0 M1并报告任何发现的问题以帮助使Spock 2.0更好)。  翻译自: https://www.javacodegeeks.com/2020/01/migrating-spock-1-3-tests-to-spock-2-0.htmlspock测试