通过不计算间接测试的覆盖率,强制用户测试依赖关系



问题是验证这种概念/功能是否存在于任何语言的任何测试框架中

案例

我有A类,其中包括B类。

在对类A的测试中,我触发了方法A,并且由于类B->此处的覆盖范围计算为A和B

2个问题

  • A(如果我不计算CC,我需要如何使我的CC工具不计算CC直接测试B类
  • B( 有没有办法做到这一点嘲笑然后设置嘲笑的行为

您应该能够通过将类B的依赖项注入到类A中来实现这一点,这样您就能够提供类B的mock而不是真实的东西。例如:

class A {
function constructor (B classB) {
this.B = B; // now do stuff with it
}
}

这与相反

class A {
function constructor () {
this.B = new B(); // now do stuff with it
}
}

因此,当您进行测试时,您向测试中的类a提供一个类B的模拟,然后您就不会在代码覆盖率报告中覆盖类B了。

话虽如此,代码覆盖率并不是最好的衡量标准。这是一个很酷的工具,可以知道你是否错过了要测试的代码区域,但它是一个容易玩的指标,它不能取代经过深思熟虑的测试,这些测试可能多次覆盖同一代码区域。

此外,重要的是要考虑您是在编写单元测试还是实现测试。这是有区别的。根据我的经验,只有在需要在测试中排除集成的情况下,模拟代码才有意义。否则,通过代码的公共入口点进行测试,以获得更完整、更易于维护的单元测试。

相关内容

  • 没有找到相关文章

最新更新