2013-04-28 248 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