如何在测试环境破碎的情况下继续前进?

时间:2012-01-04 20:17:57

标签: java unit-testing maven junit

环境:

  • 爪哇
  • 的Maven
  • 的Eclipse
  • 弹簧
  • Jetty for developemnt
  • JUnit的

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

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

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

我习惯于从一开始就对所有测试进行绿色开发,并希望通过自动化将测试恢复到有用的状态。

我如何:

  • 将测试标记为无法运行(例如“遗留测试需要更新”或“仅通过服务器”)。
  • 根据服务器是否启动运行不同的测试。
  • 记录测试统计信息趋势的一些方法(不重要)

任何建议都会有用。感谢。

更新:提出更具体的问题。

2 个答案:

答案 0 :(得分:2)

假设你已经有了实际的工作,我建议在做其他事情之前不要尝试修复所有现有的测试。无论如何@Ignore任何失败的测试都可以使您处理当前通过的测试。也许还会尝试为您忽略的每个失败测试做一个注释,这样当您开始研究它试图测试的代码区域时,您可以重新访问它。

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

答案 1 :(得分:0)

您可以使用Jenkins为您自动化测试。它可以设置为观察源控件存储库,然后执行构建并在检测到更改时对其进行测试。这将提供一个集中的位置,您可以在其中查看构建的状态和测试的成功。