【发布时间】:2009-05-14 20:27:00
【问题描述】:
我正在测试一个静态方法,该方法在检查代理和主机名以及各种事情后构建一个 URL 字符串。此方法在内部依赖于静态标志System.Net.Sockets.Socket.OSSupportsIPv6。因为它是静态的,所以我无法模拟这种依赖关系。
编辑:(这被简化了很多......我不能用标志修改方法的结构以接受真/假)。
在 XP 开发机器上,所讨论的方法返回一个可预测的字符串结果(在这种情况下,http://hostname/....)。我们支持 IPv6 的构建服务器返回完全不同的结果(它给了我类似http://192.168.0.1:80/....)。请不要问为什么 - 关键是有两种不同的输出类型因操作系统依赖性而异。
测试需要验证返回的主机名或 IP 地址是否有效。输出很容易检查。问题是我只能得到一个可能的输出,这取决于运行测试的机器。
在这种情况下编写测试的最佳做法是什么?我是否在我的测试中放置了一个 if 语句来检查标志,然后查找两个不同的输出?这对我来说似乎很粗略,因为
测试表现不同 取决于环境 跑进去
我基本上是在耦合测试 到方法,因为你需要 了解方法的内部结构 设置两种情况。
我是否设置了两个测试,每个环境一个,如果它们在错误的环境中就可以通过?我是否编写了一些复杂的正则表达式,可以分离出它得到什么样的结果,并使用更多的 if/else 逻辑来验证它?
任何建议都会有所帮助!
【问题讨论】:
标签: .net unit-testing nunit