你如何单位使用String.IsNullOrEmpty的TEst代码
本文关键字:String IsNullOrEmpty 代码 TEst 何单位 单位 | 更新日期: 2023-09-27 18:32:55
你写两个单元测试吗?一个表示值为 Null,一个表示值为字符串。空?字符串类似。IsNullOrWhiteSpace()?
是的,您通常需要测试所有可能的输入类(空、空、空格、非空格)是否获得正确的输出。
这意味着测试String.IsNullOrEmpty()
的替代方案和String.IsNullOrWhitespace()
的所有三个替代方案。
通常我会
使用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();
}
}
真正的答案是你不应该测试框架提供的功能。将此类方法视为工具包中经过Microsoft测试的工具。
相反,您应该专注于测试使用此方法的代码的输出。必须有不同的操作逻辑路径,这取决于所讨论的字符串是 null 还是空,这些是您应该在测试中关注的内容。
没有
关于你必须编写多少单元测试的规则,但我看到你需要检查 4+ 个案例:
测试中的代码:
public string MyMethod(string s){
//Do stuff
if (string.IsNullOrWhitespace(s)){
return "failed";
} else {
return "passed";
}
}
因为您正在测试黑盒,所以在以下情况下:
NULL
""
" "
"A"
你可能需要做更多的事情,比如:
" A "
"AAAA"
etc
当单元测试时,主要关注点应该是"良好"的情况。所以我预计会有更多的测试通过然后失败。