2011-05-15 264 views
0

Chris寫了一個名爲toBinary的函數,它具有一個整數輸入參數並返回一個表示二進制等效的字符串。例如,如果使用整數3調用該函數,則返回的字符串應該是'11'。Java JUnit測試

可能使用「given」,「when」和「then」序列及其等效的JUnit代碼編寫測試規範的英文序列。

我的回答是:

測試應涵蓋正常情況下,極端的情況下,和錯誤的案件。給定例3的一個整數,它應該在方法執行後將其轉換爲11。

@Test 
public void testToBinary() { 
Binary aBinary = new Binary(); 
assertEquals(3, 11); 
assertEquals(2, 10); 
assertFail(10, 8575); 
} 

這是正確的嗎?

+0

當你說'toBinary'「有一個整數的輸入參數」,你的意思是它需要一個'int'還是一個'Integer'?沒有我知道的「整數」。如果它需要一個'Integer',空字符是否有明確定義的行爲?如果是這樣,它是否會拋出NPE?如果是這樣,你能否斷言NPE被拋出? – Ray 2011-05-16 12:44:32

+0

我還會爲'Integer.MAX_VALUE' /'Integer.MIN_VALUE' – Ray 2011-05-16 12:45:13

回答

1

您可以零和負數添加測試用例..

5

在你的代碼示例中,當你寫「的assertEquals(3,11);」你斷言3等於11(基數爲10),這總是假的。

你不需要像

assertEquals("11", toBinary(3)); 

哪些測試你的函數,給出三個輸入,返回字符串「11」。

6

那些聲稱沒有任何意義 - 當然,3 = 11,您將需要轉換方法適用於輸入和驗證輸出預計:

assertEquals("11", aBinary.someConvertMethod(3)); 

預期值!必須是第一個參數,而實際值是第二個參數。

此外,assertFail不是一個真正的方法。有assertNotEquals,這可能是你在找什麼。

0

首先,每個單元測試應該有大多數一個斷言。正如其他人說你必須調用構造函數或哪種方法你是在實際的測試情況下依靠:
assertEquals("11",toBinary(3);