我想选择执行JUnit测试的顺序。我有4个类,其中有几个测试方法,我的目标是执行,例如,类A的方法Y,然后是类B的方法X,最后是类A的方法Z。你能帮帮忙吗?
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发行说明》
qnyhuwrf2#
通常,您不能指定单独的单元测试运行的顺序(尽管你可以在TestNG中指定优先级,并为每个测试指定不同的优先级)。然而,单元测试应该能够独立运行,因此测试的顺序应该无关紧要。这是一个不好的做法。如果你需要测试按照特定的顺序,你应该重新考虑你的设计。如果你发布了你为什么需要订单的细节,我相信我们可以提供建议。
juud5qan3#
JUnit对这个问题的回答是创建一个测试方法,如下所示:
@Test public void testAll() { classA.y(); classB.x(); classA.z(); }
在某些情况下(安装和拆卸很重要),这显然是一个不令人满意的答案,但是单元测试的JUnit观点是,如果测试不是独立的,那么您就做错了什么。如果以上内容不能满足您的需要,请查看TestNG。
bfhwhh0e4#
创建一个TestSuite并按照所需的顺序调用测试方法。@Yishai是对的,因为JUnit的设计使每个测试都是独立的。所以如果你调用的测试方法 * 可以 * 独立运行,那么创建一个TestSuite来覆盖特定调用顺序的场景应该没有问题。
b1payxdu5#
测试可以以任意顺序进行的一般性评论/想法过于强烈。这实际上取决于您所测试的内容。例如,我正在测试一个服务器,其中有一个changePassword操作。我认为很明显,测试的顺序很关键,在changePassword之后,旧密码不再起作用,而之前,它起作用了。我不想在每次测试后都还原服务器状态,工作量太大。我可以在所有测试完成后再还原一次。
jutyujz06#
如果前面的答案不令人满意,我注意到Sun JVM JUnit似乎总是按照定义的顺序执行单元测试。显然,依赖于此不是一个好主意。
q3qa4bjr7#
你可能会感兴趣:JExample一种不同的测试方法,使用相互依赖的测试。
djp7away8#
您可以使用@Order()注解
6mw9ycah9#
您可以像使用@Order注记一样执行此操作
@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
9条答案
按热度按时间balp4ylt1#
从4.11版开始,您可以使用注解指定执行顺序,并依方法名称排序:
请参阅《JUnit 4.11发行说明》
qnyhuwrf2#
通常,您不能指定单独的单元测试运行的顺序(尽管你可以在TestNG中指定优先级,并为每个测试指定不同的优先级)。然而,单元测试应该能够独立运行,因此测试的顺序应该无关紧要。这是一个不好的做法。如果你需要测试按照特定的顺序,你应该重新考虑你的设计。如果你发布了你为什么需要订单的细节,我相信我们可以提供建议。
juud5qan3#
JUnit对这个问题的回答是创建一个测试方法,如下所示:
在某些情况下(安装和拆卸很重要),这显然是一个不令人满意的答案,但是单元测试的JUnit观点是,如果测试不是独立的,那么您就做错了什么。
如果以上内容不能满足您的需要,请查看TestNG。
bfhwhh0e4#
创建一个TestSuite并按照所需的顺序调用测试方法。@Yishai是对的,因为JUnit的设计使每个测试都是独立的。所以如果你调用的测试方法 * 可以 * 独立运行,那么创建一个TestSuite来覆盖特定调用顺序的场景应该没有问题。
b1payxdu5#
测试可以以任意顺序进行的一般性评论/想法过于强烈。
这实际上取决于您所测试的内容。
例如,我正在测试一个服务器,其中有一个changePassword操作。
我认为很明显,测试的顺序很关键,在changePassword之后,旧密码不再起作用,而之前,它起作用了。
我不想在每次测试后都还原服务器状态,工作量太大。我可以在所有测试完成后再还原一次。
jutyujz06#
如果前面的答案不令人满意,我注意到Sun JVM JUnit似乎总是按照定义的顺序执行单元测试。显然,依赖于此不是一个好主意。
q3qa4bjr7#
你可能会感兴趣:JExample
一种不同的测试方法,使用相互依赖的测试。
djp7away8#
您可以使用@Order()注解
6mw9ycah9#
您可以像使用
@Order
注记一样执行此操作输出量