我试图就人们对单元测试和子(或外部)项目的行为达成共识。
我希望通过一个例子澄清一下。我有一个项目P1依赖于另一个项目P2。 P2有自己的单元测试和发布周期。 P1也有自己的单元测试。问题是P2的单元测试应该作为P1的单元测试的一部分包含/运行,还是应该只在P2发布时运行P2单元测试?
清除泥土。 基思。
答案 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来发现更多潜在问题并没有什么坏处。