2014-09-30 81 views
1

我應該爲正確參數的無效使用編寫一個Junit測試。我對這個概念有點困惑。有人可以幫助解釋這種情況是什麼,以及如何用一個例子來做到這一點?Junit-如何測試參數的無效使用

我正在測試一種將客戶和服務類型作爲參數的方法。我嘗試了下面的assertFalse方法,並試圖兩個客戶傳遞給

assertFalse("Registration fails for add two services to one customer", cs.addPeople("Jack", "Jill","Cleaning")); 

我意識到,這是不正確的方法爲add.People()方法只需要一個人作爲一個參數。在這種情況下,我們如何測試無效使用?非常感謝!

+0

我真的不知道,如果我理解正確的問題。對我來說,這聽起來有點像邏輯問題。像你的功能可以有一個對象和一個服務,雖然有「家」和「乾淨」是有效的,但「有人」和「乾淨」無效。也許你可以更多地瞭解這種無效使用情況? – Feroc 2014-09-30 09:11:13

+0

目標(根據要求)是測試當用戶執行參數的無效使用時會發生什麼,我不知道如何測試它..我的意思是如果參數的使用不正確,方法wouldn根本不執行,對吧? – stillAFanOfTheSimpsons 2014-09-30 09:30:52

+1

如果參數的類型不正確,該方法將執行。當然,它可能是類似的(編寫這個例子的時候編程不好):方法獲得一個字符串,並且應該對「A」,「B」和「C」作出反應,所以其他一切都是無效的。但爲此,我們實際上需要查看您必須測試的功能。 – Feroc 2014-09-30 10:01:57

回答

2

通過測試參數的無效使用情況,我想你的意思是寫入無效參數的情況。例如, 。 說你有一個方法:現在

public Integer toInteger(String input){ 
    //conversion logic 
} 

,你想知道你的方法的行爲方式在不同的場景。 一種情況是傳遞無效參數,如null,並查看您的方法的行爲。

@Test 
public void testToIntegerForNullParam(){ 
    myClass.toInteger(null); 
} 

這種方法將無法通過,如果你不處理null檢查,你將不得不重構通過這項測試。

public Integer toInteger(String input){ 
    if(input == null){ 
     throw new IllegalArgumentException("Argument was null!"); 
    } 
    //conversion logic 
} 

然後在測試中,您可以測試當參數爲null時是否確實會拋出異常。您可以使用expected = IllegalArgumentException.class

@Test(expected = IllegalArgumentException.class) 
public void testToIntegerForNullParam(){ 
    myClass.toInteger(null); 
} 

您可以繼續添加更多的場景,如不是數字串等

+0

謝謝,但我們不使用像assert(...)這樣的方法嗎?我沒有完全得到你的代碼。 – stillAFanOfTheSimpsons 2014-09-30 10:01:34

+0

在上面的例子中,我沒有使用斷言,因爲我沒有斷言。我只是期待它拋出一個異常。 – isah 2014-09-30 10:46:15

+0

它說非正確參數的使用。 null是否是一個正確的參數? – clD 2014-09-30 10:50:04