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的链接代码随此大幅增加!!代码急剧增加与此!!是的,内森,我承认这不是一个最好的做法,有独立的执行顺序。我陷入了需要维持秩序的境地。谢谢你的链接和答案!!是的,内森,我承认这不是一个最好的做法,有独立的执行顺序。我陷入了需要维持秩序的境地。谢谢你的链接和答案!!