如何解决用于Anagram制作程序的JUnit测试?
我必须为这部分代码编写junit测试:但是我必须测试所有内容,不仅意味着<asp:TextBox ID="txtTelephone" runat="server" CssClass="textboxMandatory form-control intlTelInput form-control" type="tel"/>
,还包括所有可能的异常,以及所有功能。
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
。
解决方法
测试一些极限值:
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
每次都被覆盖,并且只包含最后一个单词。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。