java我如何在一个坏的测试环境中前进?
环境:
- 爪哇
- 马文
- 蚀
- 弹簧
- 显影剂码头
- 朱尼特
我刚开始一个新项目(耶!)但是当前的单元测试状态(对我来说)有点奇怪。没有办法以自动化的方式运行测试。有些测试需要服务器启动并运行才能通过,否则会失败
更糟糕的是,有大量测试已经落后,不再通过,尽管它们应该(或者应该被改变)
问题在于测试是手动运行的(在eclipse中右键单击并作为JUnit测试运行),因此由于没有人会在每次更改时手动测试所有内容,所以测试只是简单地编写,然后就被忘记了
我从一开始就习惯于使用绿色测试进行开发,我希望通过自动化将测试恢复到有用的状态
我如何:
- 将测试标记为不带原因运行(如“旧测试需要更新”或“仅通过服务器”)李>
- 根据服务器是否启动运行不同的测试李>
- 记录测试统计数据以分析测试信息趋势的一些方法(不那么重要)
任何建议都是有用的。谢谢
更新:使问题更加具体
# 1 楼答案
您可以使用Jenkins为您自动执行测试。可以将其设置为监视源代码管理存储库,然后执行构建并在检测到更改时对其进行测试。这将提供一个集中的地方,您可以在这里查看构建的状态和测试的成功
# 2 楼答案
假设您有实际的工作要做,我建议不要在做任何其他事情之前尝试修复所有现有的测试。无论如何
@Ignore
任何失败的测试,以便您可以处理当前通过的测试。也许还可以试着为您忽略的每个失败的测试做一个记录,这样当您开始处理它试图测试的代码区域时,您可以重新访问它如果您的测试依赖于外部服务,您可以使用
assumeTrue()
在实际尝试并失败测试之前验证它们是否已启动。这将标记测试在运行时被忽略,因此您仍然可以获得构建和尽可能多的有用信息。TestWatcher
类(如果您有一个足够新的JUnit)可以帮助您使用最少的样板文件来完成这项工作,我们将它设置为忽略,而不是在无法连接时失败,然后忽略任何随后将失败的测试,而不必再次支付超时惩罚