Java 如何在JUnit中测试错误路径和转角情况?
我有代码,我必须为它编写JUnit测试。我已经为快乐路径编写了测试,但我必须为转角情况和错误路径编写测试。你能帮我找到解决办法吗Java 如何在JUnit中测试错误路径和转角情况?,java,junit,Java,Junit,我有代码,我必须为它编写JUnit测试。我已经为快乐路径编写了测试,但我必须为转角情况和错误路径编写测试。你能帮我找到解决办法吗 public String reverseWords(String input) { String oneOrMoreSpaces = "\\s+"; String[] words = input.split(oneOrMoreSpaces); String completeAnagram = "";
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;
}
公共字符串反转记录(字符串输入){
字符串oneOrMoreSpaces=“\\s+”;
String[]words=input.split(一个或多个空格);
字符串completeAnagram=“”;
for(int i=0;i
如果需要验证异常,可以使用Junit@test(预期=Yor异常)
例:
obj需要在类中初始化
@Test(expected=NullPointerException.class)
public void testNullPonterException(){
String val = obj.reverseWords(null);
}
否则,当您需要验证异常的某些其他属性时,我们可以使用ExpectedException规则
@Rule
public ExpectedException exceptionRule = ExpectedException.none();
@Test
public void whentestNullPonterExceptionThrown_thenRuleIsApplied() {
exceptionRule.expect(NullPointerException.class);
exceptionRule.expectMessage("Invalid Input");
String val = obj.reverseWords(null);
}
如果需要验证异常,可以使用Junit@test(预期=Yor异常) 例: obj需要在类中初始化
@Test(expected=NullPointerException.class)
public void testNullPonterException(){
String val = obj.reverseWords(null);
}
否则,当您需要验证异常的某些其他属性时,我们可以使用ExpectedException规则
@Rule
public ExpectedException exceptionRule = ExpectedException.none();
@Test
public void whentestNullPonterExceptionThrown_thenRuleIsApplied() {
exceptionRule.expect(NullPointerException.class);
exceptionRule.expectMessage("Invalid Input");
String val = obj.reverseWords(null);
}
常见错误和边缘情况是输入为
null
或空字符串。常见错误和边缘情况是输入为null
或空字符串。这感觉像是一个错误。不过,这个练习已经足够好了!代码似乎包含(至少)一个错误,因此很有意思地看到在哪一步可以发现这个错误
解决此类问题的一些指导原则:
,这感觉像是一个错误。不过,这个练习已经足够好了!代码似乎包含(至少)一个错误,因此很有意思地看到在哪一步可以发现这个错误
解决此类问题的一些指导原则:
只有当您知道功能应该是什么时,才能考虑测试一个方法。这里的简短答案似乎是给出一个句子,将每个单词颠倒过来,但这可能需要一些改进
一旦您认为您知道该方法应该做什么,您就可以提出一系列示例输入和输出。这些最终将成为您的测试用例
通过生成示例,您可以批判性地查找复杂(“角落”)案例。如果没有文字怎么办?字母应该和标点符号一样对待吗?颠倒一个字母的单词会有什么效果?您不需要任何代码,只需要了解应用程序域。每一个问题都可能引发更多的例子
一旦有了足够的示例,就可以为它们创建测试用例。看起来很自然
随着需求驱动测试用例的启动和运行,您可以分析实现。是否涵盖每条线路/分支?如果代码中的< /代码>分支,是否确实有测试用例来执行<代码>?如果有未执行的代码,请返回需求,思考哪个示例需要此分支。然后再加上这个例子,直到你有了完整的覆盖范围
一旦您有了完整的分支覆盖,您可以尝试并故意在代码中引入一些小错误。如果更换