根据参数跳过一些测试

Skip some tests depending on parameters

目前我正在使用 Gradle(groovy)、Gebish 和 jUnit4 进行 Selenium 测试。

在我的 gradle.build 中,我有测试环境的变量(哪个服务器本地或实时以及哪个域)。

现在我希望在每种情况下都不是所有测试 运行。例如,我希望 TestA 和 TestB 运行 的域为 abc.com,只有 TestA 和 TestC 运行 的域为 def.com

为此,我创建了一个全局配置 class,在其中我获得了 class 允许 运行 的信息。

我的想法是运行在每个方法之前加一个@before,然后检查是否允许class,但是我不知道如何在@before之后跳过。 有一个简单的方法吗?是否可以使用 System.exit(0) 之类的东西来退出测试 class 而不是整个测试?

可以使用org.junit.Assume的方法。它们就像 org.junit.Assert 中的方法,但它们不会像那些方法那样通过测试,而是在失败时跳过它们。如果您想将该控制代码放入测试中,则可以使用此方法 classes.

除此之外,您还可以使用 JUnit 类别将测试或测试 class 标记为 "run against a" 和/或 "run against b",然后决定将哪些类别 运行 在你的 Gradle 文件中。

这两种方法之间的区别 - 除了决策代码的托管位置 - 是,使用第一种解决方案,您可以在测试报告中将跳过的测试显示为 "ignored" 或 "skipped",而使用第二种解决方案只有属于指定类别的测试是运行,因此在测试报告中显示。