根据参数跳过一些测试
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",而使用第二种解决方案只有属于指定类别的测试是运行,因此在测试报告中显示。
目前我正在使用 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",而使用第二种解决方案只有属于指定类别的测试是运行,因此在测试报告中显示。