Java JUnit suite没有';t循环运行

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

我在一个套件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:");
    }
}
@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类,并使用静态计数器为每个调用返回不同的值