2016-04-25 46 views
0

我写了一个Junit测试来测试我的代码。当我在我的代码中遇到任何异常时,我希望我的Junit测试用例失败。我尝试使用assert语句,但即使在我的代码中出现异常时,我的Junit测试用例也正在传递。请任何人都可以告诉我如何才能做到这一点?谢谢。如果代码中有任何异常,如何使Junit测试用例失败?

+0

我猜你使用'fail'? –

+4

请显示您的代码。如果JUnit抛出异常,应该会自动失败。 –

回答

1

可以断言,一个全局变量“例外” =空或类似的东西并将其初始化为等于catch块中的一些信息字符串。

2

我强烈建议您只能测试功能。如果抛出异常,测试将自动失败。如果没有发生异常,您的测试将全部变为绿色。

但是,如果你仍然想编写测试代码应该失败在例外情况下,这样做: -

@Test 
public void foo(){ 
    try{ 
     //execute code that you expect not to throw Exceptions. 
    } 
    catch(Exception e){ 
     fail("Should not have thrown any exception"); 
    } 
} 
1

以下两个测试将失败,但不会进一步编码:

@Test 
public void fail1() { 
    throw new NullPointerException("Will fail"); 
} 

@Test 
public void fail2() throw IOException { 
    throw new IOException("Will fail"); 
} 
4

其实当代码抛出一个异常测试应该失败。当然,如果你捕捉到这个异常,并且不会进一步抛出它(或任何其他异常),测试不会知道它。在这种情况下,您需要检查方法执行的结果。 试验例:

@Test 
public void test(){ 
    testClass.test(); 
} 

方法,将未通过测试:

public void test(){ 
    throw new RuntimeException(); 
} 

方法是不会失败的测试

public void test(){ 
    try{ 
    throw new RuntimeException(); 
    } catch(Exception e){ 
    //log 
    } 
}