Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 未找到参数化JUnit4测试的测试_Java_Maven_Intellij Idea_Junit_Junit4 - Fatal编程技术网

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

Java 未找到参数化JUnit4测试的测试,java,maven,intellij-idea,junit,junit4,Java,Maven,Intellij Idea,Junit,Junit4,我试图从先前在我的一个src/main类中设置的队列中参数化JUnit4测试。这就是我到目前为止所做的,测试套件有一个类(MigratorTestSuite) } 还有一个类ParameterizedTest,其中我正在研究如何运行一个 @RunWith(Parameterized.class) public class ParameterizedTest { @Parameterized.Parameters(name="whatever") public static Qu

我试图从先前在我的一个src/main类中设置的
队列中参数化JUnit4测试。这就是我到目前为止所做的,测试套件有一个类(
MigratorTestSuite

}

还有一个类
ParameterizedTest
,其中我正在研究如何运行一个

@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();
    }
}
@RunWith(参数化的.class)
公共类参数化测试{
@参数化。参数(name=“whatever”)
公共静态队列数据(){
返回TestCasesConstructor.testCasesQueue;
}
私有德克情景;
公共参数化测试(队列q){
场景=q.peek();
}
@以前
public void initialize()引发ParserConfiguration异常、IOException、SQLException、ClassNotFoundException{
System.out.println(“---为运行脚本准备数据库”);
DatabaseManager.dropDatabase();
DatabaseManager.createDatabase();
}
@试验
public void testPlainMigration()引发异常{
Assert.assertTrue(Migrator.runScenario(this.scenario));
}
@之后
public void after()引发SQLException{
DatabaseManager.closeConnections();
TestCasesConstructor.testCasesQueue.remove();
}
}
当我执行mvn clean install测试-Dtest=MigratorTestSuite
时,结果是它找不到任何测试,当我调试它时,它显示:

未找到与
org.junit.runner.Request
org.junit.internal.requests.FilterRequest.getRunner

我做错了什么?我应该在TestNG中更好地实现它吗?我对Junit非常陌生。

您可以尝试以下方法:

mvn clean install -Dtest=MigratorTestSuite test 

data
方法应返回对象数组的集合,即
collection
。每个对象数组都是一个测试向量,包含输入字符串和预期结果

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

在您的例子中,似乎希望使用一系列场景作为参数

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

mvn clean install -Dtest=MigratorTestSuite test