Java JUnit suite没有';t循环运行
我在一个套件AllTests下有一些测试(假设Test1、Test2),请参见代码:Java JUnit suite没有';t循环运行,java,junit4,Java,Junit4,我在一个套件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 = JU
@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:");
}
}
@RunWith(Suite.class)
@SuiteClass({Test1.class,Test2.class})
公共类所有测试{
公共静态void main(字符串[]args){
对于(int i=0;i<4;i++){
结果=JUnitCore.runClasses(AllTests.class);
for(失败:result.getFailures()){
System.out.println(failure.toString());
}
}
}
@课前
公共静态void runBeforeClass(){
System.out.println(“之前:”);
}
@下课
公共静态void runAfterClass(){
System.out.println(“之后:”);
}
}
当我放置Result-Result=JUnitCore.runClasses(AllTests.class)时代码>在循环下,套件只运行一个序列[Test1,Test2]
问题:
如何在循环[[Test1,Test2],[Test1,Test2],…]中运行AllTest
当我运行(1)时,我如何仅以这样的顺序将参数传递给Test1
该套件只运行一个序列[Test1,Test2]
如果你看看JUnitWiki
//该类保持为空,仅用作上述注释的保持器
因此,类内的代码永远不会执行,并且由于代码中的以下行,套件只运行一个序列
@SuiteClass({Test1.class,Test2.class})
在套件中,测试是独立执行的,因此您可以使用for循环逐个执行Test1和Test2
关于仅向Test1传递参数。
我认为这在Junit中是不可能的。但是,如果您想针对输入参数的各种值测试Test1的方法,可能您可以使用参数化构造函数。我找到了问题的答案:
1。我刚刚从AllTests类中删除了main函数,并创建了另一个类MasterTest,它是JUnit套件
所有测试类:
@RunWith(Suite.class)
@SuiteClasses({ Test1.class, Test2.class})
public class AllTests {
// This class used for suiting the test classes
}
我可以在MasterTest中多次运行所有测试:
@RunWith(Suite.class)
@SuiteClasses({ AllTests.class, AllTests.class, AllTests.class})
public class MasterTest {
public static void main(String[] args) {
Result result = JUnitCore.runClasses(AllTests.class);
for (Failure failure : result.getFailures()) {
System.out.println(failure.toString());
}
}
}
2.关于参数:参数化测试对我不好,因为通过运行所有测试,如果我给出Test1 3参数,我会得到以下序列:[Test1,Test1,Test1,Test2],所以我创建了一个包含所有参数的singletone类,并使用静态计数器为每个调用返回不同的值