适当的单元测试

时间:2014-05-01 10:24:50

标签: java unit-testing

我不太确定这个问题是否符合SO标准,但是......

我在使用JUnit测试Java应用程序以及模拟等方面经验丰富...但是有一件事情我也齐心协力 - 如何确保每个类和每个方法都是真的经过测试?

我找到了与我想要达到的相似的东西 - GrandTestAuto(灵感来自testing tools page),你能推荐另一种(更好的)方法吗?

我必须更多地测试它(GTA),我对Spring,Mocking,Maven一起工作感兴趣,但我对此持怀疑态度。

我也在使用覆盖率报告(JCoverage,JaCoCo),但这不准确,因为当您测试调用a()的方法b()时,两者都被覆盖,但作为开发人员我想要为b()编写测试。

编辑:
我发现JUCA report,我也需要对此进行测试。

EDIT2:
好的,关于a()来电b()的想法必须更多。

参见ecample

void a() {
    b( "test" );
}

void b( String s ) {
    Assert.notNull( s );
    // ...
}

当涵盖a()时,b()也被覆盖,但是s为null的情况不是,并且经常发生,因为b()根本没有测试过。

1 个答案:

答案 0 :(得分:3)

我认为代码覆盖率是一种了解完全未经测试的相当好的方法,但它并不比那更多。

我建议两件事:

  • 测试评论 - 与代码评审相同,但是对于测试代码。你不会相信这是多么有效
  • 变异测试 - 在运行时更改生产代码并检查覆盖它的测试是否失败的自动工具。我正在使用PIT(http://pitest.org/),并强烈推荐它