好的,@Ignore注释用于标记不应该运行测试用例
但是,有时我希望忽略基于运行时信息的测试。例如,如果我有一个并发测试,它需要在具有一定数量内核的机器上运行。如果这个测试是在单处理器机器上运行的,我认为仅仅通过测试是不正确的(因为它还没有运行过),而且测试失败并破坏构建肯定是不对的
因此,我希望能够在运行时忽略测试,因为这似乎是正确的结果(因为测试框架将允许构建通过,但记录测试未运行)。我相当肯定注释不会给我这种灵活性,并且怀疑我需要为讨论中的类手动创建测试套件。但是,文档中没有提到这方面的任何内容,也没有查看API也不清楚如何通过编程实现这一点(即,如何以编程方式创建测试或类似的实例,该实例等同于@Ignore注释所创建的实例?)
如果有人在过去做过类似的事情,或者有一个聪明的想法,我可以如何去做这件事,我很高兴听到
JUnit方法是在运行时执行此操作,即org.JUnit.aspect
@之前
方法()之前的公共无效{
org.junit.aspect.assumeTrue(someCondition());
//其余的设置。
}
您可以在@Before方法或在测试本身中执行,但不能在@After方法中执行。如果在测试本身中执行,则将运行@Before方法。您也可以在@BeforeClass中执行,以防止类初始化
假设失败会导致忽略测试。
Edit:与junit ext中的@RunIf注释相比,它们的示例代码如下所示:
@测试
公开作废calculateTotalSalary(){
假设(Database.connect(),是(notNull());
//测试代码如下。
}
更不用说,通过这种方式从Database.connect()方法捕获和使用连接要容易得多