gpt4 book ai didi

java - JUnit 套件不循环运行

转载 作者:行者123 更新时间:2023-11-30 04:18:45 25 4
gpt4 key购买 nike

我在一个套件AllTests下有一些测试(假设Test1,Test2),请参阅代码:

@RunWith(Suite.class)
@SuiteClasses({ Test1.class, Test2.class})
public class AllTests {
public static void main(String[] args) {
for (int i = 0; i < 4; i++) {
Result result = JUnitCore.runClasses(AllTests.class);
for (Failure failure : result.getFailures()) {
System.out.println(failure.toString());
}
}
}

@BeforeClass
public static void runBeforeClass() {
System.out.println("BEFORE:");
}

@AfterClass
public static void runAfterClass() {
System.out.println("AFTER:");
}
}

当我将 Result result = JUnitCore.runClasses(AllTests.class); 置于循环下时,套件仅运行一个序列 [Test1、Test2]。

问题:

  1. 如何在循环 [[Test1, Test2], [Test1, Test2],.....] 中运行 AllTest?
  2. 当我运行 (1) 时,如何才能仅按这样的顺序将参数传递给 Test1?

最佳答案

the suite runs only one sequence [Test1, Test2].

如果你查看 Junit wiki https://github.com/junit-team/junit/wiki/Aggregating-tests-in-suites

// the class remains empty, used only as a holder for the above annotations

因此,类内的代码永远不会执行,并且由于代码中的以下行,套件运行一个序列

@SuiteClasses({ Test1.class, Test2.class})

在套件中,测试是独立执行的,因此您可以使用 for 循环依次执行 Test1 和 Test2。

关于仅向 Test1 传递参数。
我认为这在 Junit 中是不可能的。但是如果您想测试 Test1 的方法的输入参数的各种值,也许您可​​以使用参数化构造函数。

关于java - JUnit 套件不循环运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17680226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com