考虑以下代码或任何代码,我如何编写测试字符串或空值的测试?字符串不必是任何特定的,基本上它是一个字符串?
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();
}
}
}
答案 0 :(得分:1)
空字符串和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。