我正在做一个关于单元测试的好处的演讲,并且我想举一个意想不到的后果的简单例子:在一个类中更改代码会破坏另一个类的功能。

有人可以提出一个简单,容易解释的例子吗?

我的计划是围绕此功能编写单元测试,以证明我们知道可以立即运行测试来破坏某些功能。

最佳答案

一个稍微简单,因此也许更清晰的示例是:

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[],这也是我在生产代码中也看到的。不用说它不再存在!

10-06 03:34