你写了两个单元测试吗?一个值为Null,一个值为string.Empty? string.IsNullOrWhiteSpace()?
的相似之处答案 0 :(得分:2)
是的,您通常希望测试所有可能的输入类(null,empty,whitespace,non-whitespace)获得正确的输出。
这意味着要为String.IsNullOrEmpty()
和String.IsNullOrWhitespace()
的所有三种备选方案测试两种方案。
答案 1 :(得分:1)
通常,我会使用NUnit
测试用例来测试这些排列。
他们将为您提供三种不同检查的报道,而不会复制您的测试代码。
例如:
[TestCase("")]
[TestCase(null)]
public class SomeTest(string stringValue)
{
Assert.Throws<ArgumentException>(()=> CheckIfNullOrEmpty(stringValue));
}
public void CheckIfNullOrEmpty(string val)
{
if(string.IsNullOrEmpty(val))
{
throw new ArgumentException();
}
}
答案 2 :(得分:0)
真正的答案是您不应该测试框架提供的功能。将此类方法视为已经过Microsoft测试的工具包中的工具。
相反,您应该专注于测试使用此方法的代码输出。必须有不同的逻辑操作路径,这取决于所讨论的字符串是空还是空,这些是你应该关注的测试。
答案 3 :(得分:0)
没有关于你必须编写多少单元测试的规则,但我看到你需要检查4个以上的情况:
受测试代码:
public string MyMethod(string s){
//Do stuff
if (string.IsNullOrWhitespace(s)){
return "failed";
} else {
return "passed";
}
}
因为您正在测试黑盒子,所以:
NULL
""
" "
"A"
你可能需要做更多的事情:
" A "
"AAAA"
etc
当单元测试时,主要焦点应放在“好”上。案件。所以我希望通过更多测试然后失败。