多个未知结果的单位测试



考虑以下代码或任何代码,我该如何编写测试字符串或空值测试的测试?字符串根本不必是字符串?

基本上是什么特定的。
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。

最新更新