2013-04-25 69 views
2

我将外部junit.framework.TestSuite集成到使用Maven和JUnit4构建的我的库中。典型的测试,如果不是全部,都会使用JUnit4注释来启动。如何将junit.framework.TestSuite合并到这个现有的测试代码库中?在JUnit4和Maven中运行TestSuite

这是我迄今为止尝试:

public class JSR330Tck { 
    @Test 
    public junit.framework.Test suite(){ 
     Car car = Factories.get(CarFactory.class).buildCar(); 
     return Tck.testsFor(car, false, true); 
    } 
} 

或用静态方法suite()定义它:

public class JSR330Tck { 
    public static junit.framework.Test suite(){ 
     Car car = Factories.get(CarFactory.class).buildCar(); 
     return Tck.testsFor(car, false, true); 
    } 
} 

的这些都没有通过的Maven Surefire插件触发。

+0

这些文件位于哪里? pom文件是怎样的? – khmarbaise 2013-04-25 06:13:44

+0

这些文件位于src/test/java目录中,并且pom.xml如下所示:https://github.com/johncarl81/transfuse/blob/master/transfuse/pom.xml – 2013-04-25 14:13:42

+0

请参阅[Inclusions和测试排除](http://maven.apache.org/surefire/maven-surefire-plugin/examples/inclusion-exclusion.html)。您的测试类名称模式与Surefire不匹配。 – 2013-04-26 08:54:06

回答

1

我假设你的测试类不是基于在关系测试的命名约定与maven-surefire-plugin

includes> 
<include>**/*Test*.java</include> 
<include>**/*Test.java</include> 
<include>**/*TestCase.java</include> 
</includes> 

除此之外你不应该使用测试套件命名,引起神火,插件将处理已经。所以通常不需要单独定义套件。

+0

我希望我可以避免使用TestSuites,但我正在集成第三方测试工具包。我会尝试重新命名我的测试类,看看是否有效。 – 2013-04-26 18:59:26

+0

命名类JSR330TckTest的工作方式,只要我将该方法定义为static并将其命名为suite()。谢谢。 – 2013-04-26 19:16:50

+0

junit 3.8的测试套件功能是我知道动态生成测试用例的唯一方法。例如,商务人员在文件夹中提供输入和输出,并且需要对这些文件夹中的每一个进行测试运行 – djeikyb 2016-02-08 17:04:32