Java Junit测试用例-首先执行特定的测试用例
是否有任何方法可以在测试类中首先执行特定的测试用例,而不考虑类中存在的测试用例的顺序 例如:Java Junit测试用例-首先执行特定的测试用例,java,junit,Java,Junit,是否有任何方法可以在测试类中首先执行特定的测试用例,而不考虑类中存在的测试用例的顺序 例如: public class TestExample { @Test public void test1() {} @Test public void test2(){} } 我们可以先执行test2吗?我们有这样的订单吗 谢谢 尽管依赖于测试方法的顺序是一种不好的做法,但如果合适,您仍然可以使用@FixMethodOrderMethodSorters.NAME\u升
public class TestExample {
@Test
public void test1() {}
@Test
public void test2(){}
}
我们可以先执行test2吗?我们有这样的订单吗
谢谢 尽管依赖于测试方法的顺序是一种不好的做法,但如果合适,您仍然可以使用@FixMethodOrderMethodSorters.NAME\u升序注释
如果这还不够,您也可以看看这个。尽管依赖测试方法的顺序是一种不好的做法,但如果合适,您仍然可以使用@FixMethodOrderMethodSorters.NAME\u升序注释 如果这还不够,你也可以看看这个。为什么不呢
public void test1(){
}
public void test2(){
}
@Test
public void test() {
test2();
test1();
}
为什么不呢
public void test1(){
}
public void test2(){
}
@Test
public void test() {
test2();
test1();
}
排序测试通常被认为是一个坏主意,因为它意味着测试不是独立的。非独立测试可能会导致多个测试失败,例如,如果您有多个测试依赖于另一个测试设置的共享状态,如果沿途的任何测试都无法清理,那么后续的测试将受到影响,并且很难找出哪里出了错。理想情况是一个问题应该导致一个测试失败 无论如何,我认为因为前面的JUnit不会支持这一点,但显然它支持+1对于指出这一点的其他答案。制作您自己的MethodSorter的一个简单的替代方法是使用现有的方法,NAME_升序,并更改您想首先使用的方法的名称,以便它排序最高 顺便说一句,这项功能并不完全令人讨厌;例如,如果您怀疑存在依赖关系,那么最好有一种方法来调整测试顺序,以了解发生了什么
另外,如果在执行任何测试之前,您想执行一些东西,那么还有@BeforeClass注释。对测试排序通常被认为是一个坏主意,因为它意味着测试不是独立的。非独立测试可能会导致多个测试失败,例如,如果您有多个测试依赖于另一个测试设置的共享状态,如果沿途的任何测试都无法清理,那么后续的测试将受到影响,并且很难找出哪里出了错。理想情况是一个问题应该导致一个测试失败 无论如何,我认为因为前面的JUnit不会支持这一点,但显然它支持+1对于指出这一点的其他答案。制作您自己的MethodSorter的一个简单的替代方法是使用现有的方法,NAME_升序,并更改您想首先使用的方法的名称,以便它排序最高 顺便说一句,这项功能并不完全令人讨厌;例如,如果您怀疑存在依赖关系,那么最好有一种方法来调整测试顺序,以了解发生了什么
另外,如果在执行任何测试之前,您想执行一些东西,那么还有@BeforeClass注释。JUnit和大多数单元测试框架的思想是,所有测试都是独立的,不依赖于其他测试,因此可以按任何顺序运行。我想有些人是按随机顺序做的 我认为,需要先运行一个表明您的设置有问题。如果需要对所有或之前的测试做一些事情,那么考虑在@安装方法中实现这一点。
如果您需要按顺序运行测试,因为您有依赖项等,那么我将查看JUnit中的@FixMethodOrderMethodSorters.NAME\u升序断言,因此,您可以按字母顺序将第一种方法设为第一种方法。JUnit和大多数单元测试框架的思想是,所有测试都是独立的,不依赖于其他测试,因此可以按任何顺序运行。我想有些人是按随机顺序做的 我认为,需要先运行一个表明您的设置有问题。如果需要对所有或之前的测试做一些事情,那么考虑在@安装方法中实现这一点。 如果您需要按顺序运行测试,因为您有依赖项等,那么我将查看JUnit中的@FixMethodOrderMethodSorters.NAME\u升序断言,这样您就可以按照字母顺序将第一个方法设为第一个我使用以下模式:
public class TestExample {
@Test
public void test1() {
firstTest();
...rest of test1...
}
@Test
public void test2(){
firstTest();
}
private static boolean ranCommonCode = false;
private void firstTest() {
if( ranCommonCode ) return;
ranCommonCode = true;
...code of test2...
}
}
我使用这种模式:
public class TestExample {
@Test
public void test1() {
firstTest();
...rest of test1...
}
@Test
public void test2(){
firstTest();
}
private static boolean ranCommonCode = false;
private void firstTest() {
if( ranCommonCode ) return;
ranCommonCode = true;
...code of test2...
}
}
谢谢@benjamin.d的链接谢谢@benjamin.d的链接代码随此大幅增加!!代码急剧增加与此!!是的,内森,我承认这不是一个最好的做法,有独立的执行顺序。我陷入了需要维持秩序的境地。谢谢你的链接和答案!!是的,内森,我承认这不是一个最好的做法,有独立的执行顺序。我陷入了需要维持秩序的境地。谢谢你的链接和答案!!