当我们的登台服务器停机进行每周维护时,我们有许多集成测试失败。当登台服务器关闭时,我们会发送一个特定的响应,我可以在集成测试中检测到。当我得到这个响应而不是测试失败时,我想知道是否有可能跳过/忽略该测试,即使它已经开始运行。这样可以使我们的测试报告更加清晰。
有人有建议吗?
答案 0 :(得分:11)
自从我使用JUnit以来已经有一段时间但是Assume
条件是否正确?我认为这与测试的通过/失败有不同的含义。您的报告应表明测试未运行。
编辑添加:Assume class
答案 1 :(得分:0)
在测试中,你可以在执行Assert.whatever之前测试这个条件。如果测试失败,则只返回方法而不运行其余的代码/断言。
答案 2 :(得分:0)
最简单的解决方案是将测试分成两个套件:集成测试和纯单元测试。然后开发一个脚本或其他一些自动方法来确定服务器是否已启动,如果服务器关闭,则只需跳过集成测试套件。但是,如果将测试分组到这样的套件中由于某种原因是不实际的,那么这里有一个替代方案:
如果服务器不可用,您可以创建一个跳过测试的自定义Runner。您可以对运行器进行编程以自行确定服务器可用性,也可以通过某些外部进程(例如在测试阶段之前执行的脚本)确定它,并在JVM上设置运行者可以检查的系统属性(例如,通过{{1} }作为命令行参数)。
您可以使用集成测试类上的-Dcom.company.testrun.integration=false
注释启用自定义运行器,并使用内置运行器进行所有其他测试,以免影响它们。或者,您可以使用您的跑步者进行所有测试,并发明一个新的注释(例如@RunWith
),用于装饰您的集成测试方法。使用后一种方法,只有当服务器不可用时,运行器才会应用其跳过逻辑和测试方法具有特殊注释。