你如何使用String.IsNullOrEmpty单元TEst代码?

时间:2014-12-02 08:55:32

标签: c# unit-testing

你写了两个单元测试吗?一个值为Null,一个值为string.Empty? string.IsNullOrWhiteSpace()?

的相似之处

4 个答案:

答案 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

当单元测试时,主要焦点应放在“好”上。案件。所以我希望通过更多测试然后失败。