0

我需要根据使用 JUnitCore 和 Categories 运行某些测试,但我找不到让它工作的方法,你能看看,让我知道这是否有效?

我有以下 TestSuite 称为:

@RunWith(Categories.class)
@IncludeCategory(FeatureA.class) //this is the interface required as per categories documenation
@SuiteClasses( { AllTests.class } ) //imagine that AllTests contains all my tests
public class FeatureASuite {

} //if I'm not mistaken this configuration 
  // will go over all my tests and 
  // pick up only the ones with category FeatureA

然后我有一个主类将按如下方式处理执行:

public static void main(String[] args) {
    List<Class<?>> classes = new ArrayList<Class<?>>(); //classes collection
    boolean featureA= true; //as this is an example featureA is always enabled
    if(featureA) { //if feature A enabled then..
        classes.add(FeatureASuite.class); //...add the feature A suite.
    }
        JUnitCore jUnitCore = new JUnitCore(); //create the facade
        jUnitCore.runClasses(classes.toArray(new Class[classes.size()])); //run the classes specified

}

执行代码后,测试不会运行。我已经尝试过使用不同的运行程序(而不是使用 Categories.class 我尝试过 Suite.class)并执行了测试,但是我需要为每个测试方法指定类别并且 Suite.class 没有达到那个标记。

4

1 回答 1

0

我发现了为什么我的方法不起作用,上面的实现实际上是正确的,问题(我认为是 junit 错误)在于 Junit 如何对 RunWith 做出反应,如果 SuiteClasses 下的任何类出于任何原因包含 RunWith 注释执行甚至在开始运行第一个测试之前就会停止。

于 2015-05-22T17:12:21.720 回答