2013-04-28 219 views
1

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

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

,只让自己清楚,我也应当给予的是我迄今所做的一个例子(这不是原来的代码。)

@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

customertest是有单元测试的类吗? – 2013-04-28 14:09:47

+0

是的,客户是我正在测试的课程。 – newtoprogramming 2013-04-28 14:12:41

+0

所以你应该肯定创建被测试的类的实例,而不是获得测试的类的实例 – 2013-04-28 14:25:12

回答

2

您正在使用@参数完全错误(其实什么由于方法testmethodsx没有返回值,因此您的Java语法无效。

查看site的示例。

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

在这个例子中,你会看到FibonacciTest有一个带有2个参数的构造函数。由@Parameteres方法返回的每个数组都包含2个元素。这些元素被传递给构造函数,并且测试应该使用这些字段来进行参数特定的测试。

+0

非常感谢。 – newtoprogramming 2013-04-29 11:05:31

+0

我也经历了这个例子和其他例子。但是他们都在@Parameters方法中输入测试的值。我想从命令行输入值。那可能吗?? – newtoprogramming 2013-04-29 12:45:59

+0

虽然有办法做到这一点,但我认为它不适合JUnit。你可以通过系统变量来做到这一点,但如果你这样做来驱动测试,这是一个糟糕的设计。 – 2013-04-29 12:50:13