繁体   English   中英

未找到参数化 JUnit4 测试的测试

[英]No tests found for parameterized JUnit4 test

我正在尝试从之前在我的 src/main 类之一中设置的queue参数化 JUnit4 测试。 这是我到目前为止所做的,测试套件有一个类( MigratorTestSuite

@RunWith(Suite.class)
@Suite.SuiteClasses({ParameterizedTest.class})
public class MigratorTestSuite {
    @BeforeClass
    public static void setUp() throws SAXException, ParserConfigurationException, GitAPIException, IOException {
        Migrator.getReady();
    }

@AfterClass
public static void tearDown() throws SQLException {
    DatabaseManager.closeConnections();
    RepositoryManager.closeRepository();
}

}

还有一个ParameterizedTest类,我在其中弄清楚如何运行参数化 JUnit 测试,如下所示:

@RunWith(Parameterized.class)
public class ParameterizedTest {

    @Parameterized.Parameters(name="whatever")
    public static Queue<Deque<String>> data(){
        return TestCasesConstructor.testCasesQueue;
    }

    private Deque<String> scenario;

    public ParameterizedTest(Queue<Deque<String>> q){
        scenario = q.peek();
    }

    @Before
    public void initialize() throws ParserConfigurationException, IOException, SQLException, ClassNotFoundException {

        System.out.println("--- Preparing database for running scripts");
        DatabaseManager.dropDatabase();
        DatabaseManager.createDatabase();
    }

    @Test
    public void testPlainMigration() throws Exception {
        Assert.assertTrue(Migrator.runScenario(this.scenario));
    }

    @After
    public void after() throws SQLException {
        DatabaseManager.closeConnections();
        TestCasesConstructor.testCasesQueue.remove();
    }
}

当我执行mvn clean install test -Dtest=MigratorTestSuite结果是它没有找到任何测试,当我调试它时,它显示:

没有测试在org.junit.internal.requests.FilterRequest.getRunner找到与org.junit.runner.Request中的任何参数匹配的数据

我究竟做错了什么? 我应该在 TestNG 中更好地实现它吗? 我真的是 Junit 的新手。

你可以试试这个:

mvn clean install -Dtest=MigratorTestSuite test 

data方法应该返回一个对象数组的集合,即Collection<Object[]> 每个对象数组都是一个测试向量,例如包含一个输入字符串和一个预期结果。

测试类构造函数应将测试向量的元素作为参数。 在上面的例子中,它需要一个字符串和一个结果参数,你通常将它们存储在一个字段中,以便实际的测试用例可以使用它。 对于每个测试向量,都会创建测试类的一个新实例。

在您的情况下,您似乎想使用一系列场景作为参数。

因此,您的数据方法应返回场景数组的集合(每个数组的长度为 1),并且您的构造函数应使用单个场景(而不是完整集合;因此无需“偷看”)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM