这些是我的测试用语
class Mother {
@Before
public void setUp() {
if (!this.getClass().isAnnotatedWith("Version20")) { // pseudo code
/*
* stop this test without failing!
*/
}
// further setup
}
}
@Version20
class Child extends Mother {
@Test
public void test() {
// run only when Version == 20
}
}
是否可以在母亲的@Before方法中停止Child中的测试而不会失败或断言(假)?
编辑: 我有更多版本@ Version19,@ Version18等 我的软件正在读取配置文件并输出结果,某些测试仅适用于特殊版本。 我不想在测试方法中进行版本检查,因为我有很多小测试,不喜欢代码重复
答案 0 :(得分:18)
之前我问过similar question - 结果是您可以使用Assume
类'方法根据运行时检查禁用测试(而{ {1}}是静态条件。)
也就是说,如果您总是根据特定的注释禁用它们,那么您似乎并不需要在运行时执行此操作。简单地使用@Ignore
以及@Ignore
注释类可以完成这项工作,并且可以说更清晰。
虽然我怀疑你可能只是在测试以“1.0模式”运行时忽略 - 在这种情况下它是运行时内省,你可以用以下的东西来做:
@Version20