你如何单位使用String.IsNullOrEmpty的TEst代码

本文关键字:String IsNullOrEmpty 代码 TEst 何单位 单位 | 更新日期: 2023-09-27 18:32:55

你写两个单元测试吗?一个表示值为 Null,一个表示值为字符串。空?字符串类似。IsNullOrWhiteSpace()?

你如何单位使用String.IsNullOrEmpty的TEst代码

是的,您通常需要测试所有可能的输入类(空、空、空格、非空格)是否获得正确的输出。

这意味着测试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

当单元测试时,主要关注点应该是"良好"的情况。所以我预计会有更多的测试通过然后失败。