簡體   English   中英

Anagram 制作程序的 JUnit 測試?

[英]JUnit test for Anagram making program?

我必須為這部分代碼編寫 junit 測試:但我必須測試所有內容,不僅意味着assertEquals(expected, actual) ,還意味着所有可能的異常,所有功能。

public String reverseWords(String input) {
    String oneOrMoreSpaces = "\\s+";
    String[] words = input.split(oneOrMoreSpaces);
    String completeAnagram = "";

    for (int i = 0; i < words.length; i++) {
        char[] symbol = words[i].toCharArray();
        char newSymbolSequence;
        int j = symbol.length - 1, k = 0;

        while (k < j) {
            if (!Character.isAlphabetic(symbol[k]))
                k++;
            else if (!Character.isAlphabetic(symbol[j]))
                j--;
            else {
                newSymbolSequence = symbol[k];
                symbol[k] = symbol[j];
                symbol[j] = newSymbolSequence;
                k++;
                j--;
            }
        }
        completeAnagram = new String(symbol);
    }
    return completeAnagram;
}

這是我已經做的

private Anagram anagram = new Anagram();

@Test(expected = NullPointerException.class)
public void checkExpected_NullPointerException(){
    anagram.reverseWords(null);
}
@Test
public void reverseWords_shouldMakeAnagram_ofInputText(){
    String actual = anagram.reverseWords("qwe123rty");
    String expected = "ytr123ewq";
    assertEquals(expected, actual);
}
@Test
public void throwingTest(){
    String actual = anagram.reverseWords("qwe123rty");
    String expected = "qwe123rty";
    assertNotSame(expected, actual);
}

任何人都可以幫助我使用真正應該在那里的好的@Test方法。 我不知道我還能@Test其他什么。

測試一些極限值:

String actual = anagram.reverseWords("");
String actual = anagram.reverseWords(" ");
String actual = anagram.reverseWords("q");

你正在用文字做一些邏輯,所以也測試一下:

String actual = anagram.reverseWords("more than a feeling");
String actual = anagram.reverseWords("azerty querty");
String actual = anagram.reverseWords("azerty ");
String actual = anagram.reverseWords(" azerty ");

劇透:我想你會發現一些錯誤,因為completeAnagram每次都會被覆蓋並且只包含最后一個單詞。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM