我有一个包含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]);
}
}
答案 0 :(得分:2)
你正在使用完全错误的@Parameters(事实上你所使用的Java语法无效,因为方法testmethodsx
没有返回值)。
请参阅此site的示例。
应该只有一个@Parameters
方法。它应为static
并返回Collection<Object[]>
。数组中的元素数必须等于测试类'构造函数中的参数数。
在示例中,您将看到FibonacciTest
有一个带有2个参数的构造函数。 @Parameteres
方法返回的每个数组都包含2个元素。这些元素将传递给构造函数,测试应使用这些字段进行特定于参数的测试。