多个未知结果的单元测试

时间:2014-03-06 13:49:11

标签: c# unit-testing

考虑以下代码或任何代码,我如何编写测试字符串或空值的测试?字符串不必是任何特定的,基本上它是一个字符串?

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();
        }
    }
}

1 个答案:

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