单元测试外部项目

时间:2009-02-24 02:50:14

标签: c# unit-testing nunit

我试图就人们对单元测试和子(或外部)项目的行为达成共识。

我希望通过一个例子澄清一下。我有一个项目P1依赖于另一个项目P2。 P2有自己的单元测试和发布周期。 P1也有自己的单元测试。问题是P2的单元测试应该作为P1的单元测试的一部分包含/运行,还是应该只在P2发布时运行P2单元测试?

清除泥土。 基思。

4 个答案:

答案 0 :(得分:4)

当P1运行时,无需运行P2测试。如果P2的代码没有改变,那么在期间再次运行测试将不会带来任何好处。

如果P2由于P1测试而中断,则需要对P2进行更多单元测试以确保您有足够的覆盖率(或者您可能存在接口问题,这完全是另一个问题)。

答案 1 :(得分:2)

理论上,如果P2的单元测试是好的,那么你不需要运行它们。

然而,如果你确实运行它们,那么通过环境差异会导致它们失败(可能是轻微的)。如果运行它们的成本很低,为什么不呢?但是,如果测试的设置很复杂,你需要一个额外的数据库或者什么,那么它可能不值得痛苦。

您可能需要的是使用P2的代码的集成测试,该代码测试您使用的特定功能的行为。如果您正在使用P2,并且P2以某种微妙的方式发生变化,那么您怎么知道。如果P2有不同的发布周期,那么这一点尤为重要:你不知道它们已经破坏了什么: - )

答案 2 :(得分:1)

执行get时运行它们。如果正在从源代码控件中实时检索代码,那么也要运行它们。 另请注意,您可能希望在P1上使用P2来进行一些集成测试。

答案 3 :(得分:0)

我在客户端和服务器的情况下有过类似的经历。即客户端与Web服务。两个组件都进行了单元测试。

P2测试基于P1为实体的假设。与P1版本对战是个好主意。但是,运行P2和P1来发现更多潜在问题并没有什么坏处。