考虑以下代码或任何代码,我该如何编写测试字符串或空值测试的测试?字符串根本不必是字符串?
基本上是什么特定的。public string BuildNumber()
{
using (PropertyGetter getProperty = new PropertyGetter())
{
return getProperty.GetString("BuildNumber", "Win32_BIOS");
}
}
public class PropertyGetter
{
public PropertyGetter() { }
public string GetString(string propertyName, string Win32Class)
{
ManagementObjectSearcher moSearcher = new ManagementObjectSearcher
("SELECT " + propertyName + " FROM " + Win32Class);
using (var enu = moSearcher.Get().GetEnumerator())
{
if (!enu.MoveNext() || enu.Current[propertyName].ToString() == null)
{
return String.Empty;
}
return enu.Current[propertyName].ToString();
}
}
}
空字符串和null是两个不同的值,因此是两个单独的测试用例。因此,您应该写两个测试。
实际上,如果要测试GetString
方法,则有两个字符串参数,所以这是四个可能的组合。
但是,如果所有四个组合的预期结果都是相同的,则如果您具有不错的单元测试框架,则可以编写参数化测试:
[Theory]
[InlinedData("", "")]
[InlinedData("", null)]
[InlinedData(null, "")]
[InlinedData(null, null)]
public void MyTest(string propertyName, string win32Class)
{
// Pass propertyName and win32Class into the GetString method here
// and make an assertion on the result
}
此示例使用xunit.net。