dgi*_*ard 8 c# unit-testing demo
我正在组织一个关于单元测试的好处的演示文稿,我想要一个意想不到的后果的简单示例:在一个类中更改代码以破坏另一个类中的功能.
有人可以建议一个简单,易于解释的例子吗?
我的计划是围绕此功能编写单元测试,以证明我们知道我们通过立即运行测试来破坏某些东西.
Rob*_*Rob 12
一个稍微简单,因此可能更清晰的例子是:
public string GetServerAddress()
{
    return "172.0.0.1";
}
public void DoSomethingWithServer()
{
    Console.WriteLine("Server address is: " +  GetServerAddress());
}
如果GetServerAddress是更改以返回数组:
public string[] GetServerAddress()
{
    return new string[] { "127.0.0.1", "localhost" };
}
DoSomethingWithServer的输出会有所不同,但它仍然会编译,从而产生一个更微妙的错误.
第一个(非阵列)版本将打印Server address is: 127.0.0.1,第二个将打印Server address is: System.String[],这是我在生产代码中也看到的.毋庸置疑,它不再存在!
这是一个例子:
class DataProvider {
    public static IEnumerable<Something> GetData() {
        return new Something[] { ... };
    }
}
class Consumer {
    void DoSomething() {
        Something[] data = (Something[])DataProvider.GetData();
    }
}
改变GetData()返回a List<Something>,Consumer并将打破.
这看起来有点人为,但我在实际代码中看到了类似的问题.