如何运行由工厂方法创建的(JUnit)TestSuite?

时间:2013-09-01 15:19:35

标签: java junit

我一直在寻找自定义实施收藏品的验证测试,并偶然发现了这一点:http://www.gamlor.info/wordpress/2012/09/google-guava-collection-test-suite/

我之前没有使用过junit(所以我是junit的总菜鸟)。我将junit4添加到了我的测试项目中......并且坚持如何实际运行由Google Guava Collection Test Suite创建的测试套件。我从我的测试类中运行带注释的测试就好了,但不是来自番石榴的测试套件。

junit文档说套件是通过使用套件注释来注释套件类来创建的,列出了它们应该包含的案例,但显然我无法以这种方式列出动态生成的类。我很乐意创建一个简单的测试并将整个套件作为单个测试运行,但是...如何让junit运行套件实例?

1 个答案:

答案 0 :(得分:2)

如果你有一个返回Test对象的工厂方法(让我们称之为TestMaker.foo(),那么你可以写下类似的东西来取Test并将它添加到你自己的TestSuite课程:

import junit.framework.JUnit4TestAdapter;
import junit.framework.TestSuite;
import org.junit.runner.RunWith;
import org.junit.runners.AllTests;

@RunWith(AllTests.class)
public class TestRunner {
    public static TestSuite suite() {
        TestSuite ts = new TestSuite();

        ts.addTest(TestMaker.foo());

        return ts;
    }
}

现在,当您运行TestRunner测试时,它还将运行Test返回的TestMaker.foo()以及可能直接在TestRunner中定义的任何其他测试。

对于相关讨论(例如,如何引用Test Class而不是传递Test对象),请查看:How do I Dynamically create a Test Suite in JUnit 4?