黄村网站建设,网站建设就业,一家只做性价比的网站,长春专业企业网站建设工作室一般实践认为#xff0c;自动化测试应能够独立运行且无特定顺序#xff0c;并且测试结果不应依赖于先前测试的结果。 但是在某些情况下#xff0c;可以证明特定的测试执行顺序是正确的#xff0c;尤其是在集成或端到端测试中。 默认情况下#xff0c;在JUnit 5中#xf… 一般实践认为自动化测试应能够独立运行且无特定顺序并且测试结果不应依赖于先前测试的结果。 但是在某些情况下可以证明特定的测试执行顺序是正确的尤其是在集成或端到端测试中。 默认情况下在JUnit 5中测试方法的执行在构建之间是可重复的因此是确定性的但是该算法是故意不明显的作为库状态的作者。 幸运的是可以使用内置方法定购器或通过创建自定义定购器来调整执行顺序以适应我们的需求。 org.junit.jupiter.api.TestMethodOrder 为了更改测试执行顺序我们需要使用org.junit.jupiter.api.TestMethodOrder注释测试类并将方法排序器的类型作为参数传递。 从JUnit 5.4开始有三个内置的方法排序器 OrderAnnotation Alphanumeric和Random 。 通过实现org.junit.jupiter.api.MethodOrderer接口我们还可以轻松创建自己的自定义方法org.junit.jupiter.api.MethodOrderer器。 使用 package pl.codeleak.samples.junit5.basics; import org.junit.jupiter.api.MethodOrderer; import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestMethodOrder; TestMethodOrder (MethodOrderer.OrderAnnotation. class ) class TestExecutionOrderWithOrderAnnotation { Order ( 1 ) Test void aTest() {} Order ( 2 ) Test void bTest() {} Order ( 3 ) Test void cTest() {} } 字母数字顺序 TestMethodOrder (MethodOrderer.Alphanumeric. class ) class AlphanumericTestExecutionOrder { Test void aTest() {} Test void bTest() {} Test void cTest() {} } 随机排序 如果要确保生成之间的方法执行顺序不确定则随机排序可能很有用。 TestMethodOrder (MethodOrderer.Random. class ) class AlphanumericTestExecutionOrder { Test void aTest() {} Test void bTest() {} Test void cTest() {} } 随机方法订购者使用System.nanoTime()作为种子但是可以使用junit.jupiter.execution.order.random.seed配置属性对其进行更改。 此属性的值应返回可以使用Long.valueOf(String)进行转换的任何String 。 配置种子的一种方法是在junit-platform.properties配置文件中提供配置属性 junit.jupiter.execution.order.random.seed 42 定制订购 可以通过实现org.junit.jupiter.api.MethodOrderer接口并将其作为TestMethodOrder的参数来创建自定义方法TestMethodOrder 。 下面的示例是一个方法排序器它按名称的长度对方法进行排序 class MethodLengthOrderer implements MethodOrderer { private ComparatorMethodDescriptor comparator Comparator.comparingInt(methodDescriptor - methodDescriptor.getMethod().getName().length()); Override public void orderMethods(MethodOrdererContext context) { context.getMethodDescriptors().sort(comparator); } } 并使用 TestMethodOrder (MethodLengthOrderer. class ) class CustomTestExecutionOrder { Test void aTest() {} Test void abTest() {} Test void abcTest() {} } 摘要 在某些情况下有一种在JUnit 5中调整测试执行顺序的方法会很有用我很高兴看到此功能。 我相信在大多数情况下内置方法订购者将绰绰有余。 如果没有那么有一种实现自定义方法的简便方法。 在GitHub上找到本文中使用的示例以及更多 https : //github.com/kolorobot/junit5-samples/tree/master/junit5-basics 翻译自: https://www.javacodegeeks.com/2019/03/test-execution-order-junit-5.html