如何在JUnit测试方法本身中忽略测试

如何在JUnit测试方法本身中忽略测试,junit,continuous-integration,integration-testing,Junit,Continuous Integration,Integration Testing,我们有许多集成测试在登台服务器停机进行每周维护时失败。当登台服务器关闭时,我们会发送一个我可以在集成测试中检测到的特定响应。当我得到这个响应而不是测试失败时,我想知道即使测试已经开始运行,是否可以跳过/忽略该测试。这将使我们的测试报告更清晰 有人有什么建议吗?在您的测试中,您可以在执行Assert.whatever之前测试此条件。如果测试失败,只需从方法返回,而不运行其余的代码/断言。我使用JUnit已经有一段时间了,但是没有办法假定条件为真吗?我认为这与考试及格/不及格有着不同的含义。您的报告

我们有许多集成测试在登台服务器停机进行每周维护时失败。当登台服务器关闭时,我们会发送一个我可以在集成测试中检测到的特定响应。当我得到这个响应而不是测试失败时,我想知道即使测试已经开始运行,是否可以跳过/忽略该测试。这将使我们的测试报告更清晰


有人有什么建议吗?

在您的测试中,您可以在执行Assert.whatever之前测试此条件。如果测试失败,只需从方法返回,而不运行其余的代码/断言。

我使用JUnit已经有一段时间了,但是没有办法假定条件为真吗?我认为这与考试及格/不及格有着不同的含义。您的报告应表明测试未运行


编辑添加:

最简单的解决方案是将测试分为两个套件:集成测试和纯单元测试。然后开发一个脚本或一些其他自动化方法来确定服务器是否启动,如果服务器关闭,只需跳过集成测试套件即可。但是,如果出于某种原因,将测试分组为这样的套件是不可行的,那么这里有一个替代方案:

如果服务器不可用,您可以创建一个跳过测试的自定义服务器。您可以对运行程序进行编程以自行确定服务器可用性,也可以通过一些外部过程来确定服务器可用性,例如在测试阶段之前执行的脚本,并在JVM上设置运行程序可以检查的系统属性(例如,将
-Dcom.company.testrun.integration=false
作为命令行参数传递)

您可以在集成测试类上使用
@RunWith
注释启用自定义运行程序,并将内置运行程序用于所有其他测试,以使它们不受影响。或者,您可以使用runner进行所有测试,并发明一个新的注释(例如
@IntegrationTest
),用于修饰集成测试方法。使用后一种方法,仅当服务器不可用且测试方法具有特殊注释时,运行程序才会应用其跳过逻辑