netbeans 选择执行JUnit测试的顺序

4dc9hkyq  于 2022-11-10  发布在  其他
关注(0)|答案(9)|浏览(192)

我想选择执行JUnit测试的顺序。我有4个类,其中有几个测试方法,我的目标是执行,例如,类A的方法Y,然后是类B的方法X,最后是类A的方法Z。
你能帮帮忙吗?

balp4ylt

balp4ylt1#

从4.11版开始,您可以使用注解指定执行顺序,并依方法名称排序:

import org.junit.Test;
import org.junit.FixMethodOrder;
import org.junit.runners.MethodSorters;

@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class MyTest {

    @Test
    public void test1Create() {
        System.out.println("first");
    }

    @Test
    public void test2Update() {
        System.out.println("second");
    }
}

请参阅《JUnit 4.11发行说明》

qnyhuwrf

qnyhuwrf2#

通常,您不能指定单独的单元测试运行的顺序(尽管你可以在TestNG中指定优先级,并为每个测试指定不同的优先级)。然而,单元测试应该能够独立运行,因此测试的顺序应该无关紧要。这是一个不好的做法。如果你需要测试按照特定的顺序,你应该重新考虑你的设计。如果你发布了你为什么需要订单的细节,我相信我们可以提供建议。

juud5qan

juud5qan3#

JUnit对这个问题的回答是创建一个测试方法,如下所示:

@Test public void testAll() {
       classA.y();
       classB.x();
       classA.z();
  }

在某些情况下(安装和拆卸很重要),这显然是一个不令人满意的答案,但是单元测试的JUnit观点是,如果测试不是独立的,那么您就做错了什么。
如果以上内容不能满足您的需要,请查看TestNG。

bfhwhh0e

bfhwhh0e4#

创建一个TestSuite并按照所需的顺序调用测试方法。@Yishai是对的,因为JUnit的设计使每个测试都是独立的。所以如果你调用的测试方法 * 可以 * 独立运行,那么创建一个TestSuite来覆盖特定调用顺序的场景应该没有问题。

b1payxdu

b1payxdu5#

测试可以以任意顺序进行的一般性评论/想法过于强烈。
这实际上取决于您所测试的内容。
例如,我正在测试一个服务器,其中有一个changePassword操作。
我认为很明显,测试的顺序很关键,在changePassword之后,旧密码不再起作用,而之前,它起作用了。
我不想在每次测试后都还原服务器状态,工作量太大。我可以在所有测试完成后再还原一次。

jutyujz0

jutyujz06#

如果前面的答案不令人满意,我注意到Sun JVM JUnit似乎总是按照定义的顺序执行单元测试。显然,依赖于此不是一个好主意。

q3qa4bjr

q3qa4bjr7#

你可能会感兴趣:JExample
一种不同的测试方法,使用相互依赖的测试。

djp7away

djp7away8#

您可以使用@Order()注解

6mw9ycah

6mw9ycah9#

您可以像使用@Order注记一样执行此操作

@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class MyTest {
     
    @Test
    @Order(1)
    @DisplayName("First")
    public void firstTest() {
        System.out.println("a");
    }
     
    @Test
    @Order(2)
    @DisplayName("Second")    
    public void secondTest() {
        System.out.println("b");

    }
  
    @Test
    @Order(3)  
    @DisplayName("Third")  
    public void thirdTest() {
        System.out.println("c");
    }
}

输出量

a
b
c

相关问题