3

我和我的队友很难理解突变测试是否可以/应该在引用 Swing 类的 JUnit 测试上进行。

更准确地说,我们目前正在使用 Junit 4 和 Assertj Swing 来测试该大学的测试任务(使用 TDD)的接口。我们还使用 PITEST 作为突变测试框架。

我们使用 Eclipse 的 WindowBuilder 插件构建了 Swing 类,因此我们对类的结构没有太多控制。单元测试都是绿色的,但是当运行pit时,在这些类中会从pit中抛出大量异常,并且测试失败了。您可以在travis上看到 maven 日志。

由于我们刚刚开始了解测试世界,因此非常感谢实际处理这些事情的人的建议。

非常感谢你。

4

1 回答 1

1

变异测试用于测试您的测试覆盖率,而不是您的代码。因此,当您的测试失败时,没关系,您的测试覆盖率是可以接受的。

问题是 UI 测试很难编码,而且它们不是很稳定(至少几年前是这样,尤其是对于 Linux)。所以突变测试没有为他们提供额外的价值。UI 代码中的任何微小更改都可能提供无法解释的堆栈跟踪,因此您不能说您的测试是否良好,或者 Swing 是否过于复杂并且很容易崩溃(Swing 会引发大量异常,因此任何微小的更改都可能引发他们)。

我的建议是标准的:将您的 UI 代码与业务逻辑分开,并为您的业务类提供常规测试。在这种情况下,您的突变测试可能是合理的。

于 2019-08-02T12:06:47.403 回答