我希望按特定顺序执行被标记为 @Test
的测试方法。
例如:
public class MyTest {
@Test public void test1(){}
@Test public void test2(){}
}
我希望每次运行MyTest
时,都能确保在运行test2()
之前先运行test1()
,但我找不到类似于@Test(order=xx)
的注解。
我认为这是JUnit的一个重要功能,如果JUnit的作者不想要有序功能,那么为什么呢?
我希望按特定顺序执行被标记为 @Test
的测试方法。
例如:
public class MyTest {
@Test public void test1(){}
@Test public void test2(){}
}
我希望每次运行MyTest
时,都能确保在运行test2()
之前先运行test1()
,但我找不到类似于@Test(order=xx)
的注解。
我认为这是JUnit的一个重要功能,如果JUnit的作者不想要有序功能,那么为什么呢?
我已经阅读了一些答案并同意这不是最佳实践,但是按字母顺序升序排序测试的最简单方法 - 也是JUnit默认运行测试的方式。
所以只需按您想要的字母顺序命名测试即可。还请注意,测试名称必须以单词“test”开头。只需注意数字即可
test12将在test2之前运行
所以:
testA_MyFirstTest testC_ThirdTest testB_ATestThatRunsSecond
如果你想在JUnit 5中按特定顺序运行测试方法,可以使用以下代码。
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class MyClassTest {
@Test
@Order(1)
public void test1() {}
@Test
@Order(2)
public void test2() {}
}
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
为类进行注释,并保留所有测试方法的@Test
注解,并根据期望的执行顺序按字母顺序重命名它们,例如t1_firstTest()
,t2_secondTest()
等。 - MisterStrickland