2013-10-10 33 views
6

我想知道是否有一个注释或方法来执行测试,如果pre-conditoin会见? 我有一种情况,一些测试是相关的,直到满足特定的日期。 我使用JUnit,Mockito。 感谢条件满足时如何忽略单元测试?

回答

8

您可以使用Assume来做到这一点。

在下面显示的示例中,我想检查状态,如果precondition==true和我想断言在precondition==false的情况下抛出异常。

@Test 
public final void testExecute() throws InvalidSyntaxException { 
    Assume.assumeTrue(precondition); // Further execution will be skipped if this holds true 
    CommandResult result = sentence.getCommand().execute(); 
    boolean status = Boolean.parseBoolean(result.getResult()); 
    Assert.assertTrue(status); 
} 

@Test(expected = InvalidSyntaxException.class) 
public final void testInvalidParse() throws InvalidSyntaxException { 
    Assume.assumeTrue(!precondition); 
    CommandResult result = sentence.getCommand().execute(); 
} 

希望这对你有帮助。

5

可以使用Assume

一组数据来描述有关条件,使 测试是有意义的假设有用的方法。假设失败并不意味着 代码被破坏,但测试没有提供有用的信息。默认的JUnit runner会将忽略失败假设的测试视为忽略。

因此在测试开始时,你可以写

Assume.assumeThat("Condition not true - ignoreing test", myPreCondition); 

如果myPreCondition是假的JUnit会忽略这个测试。

+0

你唯一需要注意的是Assume类不会给你任何失败/被忽略的指示器(至少在Maven上运行时)。这意味着,如果这种事情对您来说很重要,您必须有一些方法来识别跳过的测试。 – JoshC13