如何在一个破碎的测试环境中继续前进



环境:

  • Java
  • Maven
  • Eclipse
  • 弹簧
  • 开发码头
  • JUnit

我刚开始一个新项目(耶!),但当前的单元测试状态(对我来说)有点奇怪。没有办法以自动化的方式运行测试。有些测试需要服务器启动并运行才能通过,否则就会失败。

更糟糕的是,有大量的测试已经落后,不再通过,尽管它们应该(或者应该改变)。

问题是测试是手动运行的(在eclipse中右键单击并作为JUnit测试运行),所以由于没有人会手动测试每次更改的所有内容,所以测试只是简单地编写然后忘记了。

我习惯于从一开始就让所有测试都是绿色的,我想通过自动化让测试回到有用的状态。

如何:

  • 将测试标记为不运行,并说明原因(如"需要更新遗留测试"或"仅通过服务器")
  • 根据服务器是否启动,运行不同的测试
  • 记录测试统计信息的某种方法,用于测试信息的趋势分析(不那么重要)

任何建议都是有用的。谢谢

更新:使问题更加具体。

假设你有实际的工作要做,我建议在做其他事情之前不要试图修复所有现有的测试。无论如何,@Ignore任何失败的测试,这样你就可以处理当前通过的测试。也许也可以试着为你忽略的每个失败的测试做一个记录,这样你可以在处理它试图测试的代码区域时重新访问它。

如果您的测试依赖于外部服务,您可以在实际尝试并失败测试之前使用assumeTrue()来验证它们是否已启动——这将标记在运行时忽略的测试,这样您仍然可以获得构建和尽可能多的有用信息。TestWatcher类(如果你有一个足够新的JUnit)可以帮助你用最少的样板来实现这一点——我们将其设置为忽略,而不是在无法连接时失败,然后忽略任何随后失败的测试,而不需要再次支付超时罚款。

您可以使用Jenkins为您自动化测试。它可以设置为监视源代码管理存储库,然后执行构建并在检测到更改时对其进行测试。这将提供一个集中的地方,您可以在那里查看构建的状态和测试的成功。

最新更新