2015-10-17 17 views
-4

任何人都可以給我兩個失敗測試用例在java 這個函數與指定的輸入和預期的結果?Junit測試字符串方法的總和

public int sumOfString(String numbers){  
    if(numbers == null) throw new IllegalArgumentException(); 
    String[] parts = numbers.split(","); 
    int sum = 0; 
    for (String string : parts) 
    { 
    sum += Integer.parseInt(string); 
    } 
    return sum; 
} 

這是我已經試過

public void testSumOfString() { 
    String numbers = "13,4,,5"; 
    Engine instance = new Engine(); 
    int expResult = 22; 
    int result = instance.sumOfString(numbers); 
    assertEquals(expResult, result); 
} 
public void testSumOfString2() { 
    String numbers = "13,A,5"; 
    Engine instance = new Engine(); 
    int expResult = 13 + 65 + 5; 
    int result = instance.sumOfString(numbers); 
    assertEquals(expResult, result); 
} 
+0

我可以;但爲什麼我應該花我的空閒時間做你的功課? – GhostCat

+0

您正在要求我們向您提供您的方法失敗的測試用例,但該方法是唯一描述預期行爲的方法。對不起,但這是不可能完成的任務。 – fabian

+0

想想超過2種情況下你的方法會失敗,我相當簡單......我投票選擇從SO中刪除這個問題,因爲它不尊重它在這裏的工作方式。我們不是你的家庭作業猴子:當需要幫助時,我們會提供幫助;如果不付出任何努力,SO並不是一項能夠爲您的作業找到確切答案的服務。 –

回答

1

你要麼創建一個包含代碼的對象或讓你的類的靜態用於測試目的。

//There are your two test cases 
//One is when your code tries to accept an empty string 
//One is when you're trying to sum alpha characters. 
public void testSumOfString() { 
     Assert.Equals(new IllegalArgumentException(),MyObject.sumOfString("")); // MyObject is your class 
     // the string that I gave to the method can make the method work because it's empty 
    Assert.Equals(new NumberFormatException(), MyObject.sumOfString("Assadsdfcdsvc"); 
    } 

您應該更新您的代碼以確保它所接收的字符串完全由整數值組成。一個好的開始將是更新您的代碼與以下行

//Update your code with the following 
if(str == null || str.isEmpty()) throw new IllegalArgumentException(); 
+0

我發送{「0」,「A」,「3」 },這會導致一個錯誤,,這是失敗的測試用例,我可以將它報告給我們的Java開發人員? –

+0

我正在執行resault:65 + 3 + 0 = 68 –

+0

在那種情況下,我真的不知道你會如何期待這樣的結果..除非你試圖查看字符串中每個字符的ASCII值。除此之外,代碼只接受STRINGS。你正在發送一組字符,這沒關係。但你也許應該考慮將方法轉換爲接收char數組,然後在方法內部,將數組轉換爲字符串,然後嘗試獲取每個char的ASCII值並最終生成總和。 –