JUnit中的参数化测试

时间:2013-04-28 13:34:35

标签: java junit parameterized-unit-test

我有一个包含3个参数化方法的程序,它从命令行接收参数。我想测试它们,我已经在JUnit中编写了一个测试,右键单击原始类并单击新的Junit测试。在测试类中,我将类注释为@RunWith(Parameterized.class),将参数化方法注释为@Parameters,将testmain方法注释为@test

在每个方法中,我都为原始类创建了一个引用,并调用了方法并传递了所需的参数。现在有一个初始化错误,表示测试类中没有公共静态方法。有人可以告诉我这是否是进行测试的正确方法,如果不是,那么正确的方法是什么。

为了使自己清楚,我还将举例说明我迄今所做的工作(这不是原始代码。)

@RunWith(Parameterized.class)
Public class customertest(){

@Parameters
public testmethod1(String a, String b){
customer test = new customer();
test.method1(a, b);
}

@Parameters
public testmethod2(String c, String d){
customer test = new customer();
test.method2(c, d);
}

@parameters
public testmethod3(String e){
customer test = new customer();
test.method3(e);

}

@Test
public static void testmain(String [] args){
customertest tester = new customertest();
tester.testmethod1(args[0], args[1]);
tester.testmethod2(args[2], args[3]);
tester.testmethod3(args[4]);


}




}

1 个答案:

答案 0 :(得分:2)

你正在使用完全错误的@Parameters(事实上你所使用的Java语法无效,因为方法testmethodsx没有返回值)。

请参阅此site的示例。

应该只有一个@Parameters方法。它应为static并返回Collection<Object[]>。数组中的元素数必须等于测试类'构造函数中的参数数。

在示例中,您将看到FibonacciTest有一个带有2个参数的构造函数。 @Parameteres方法返回的每个数组都包含2个元素。这些元素将传递给构造函数,测试应使用这些字段进行特定于参数的测试。

相关问题