2015-03-31 126 views
0

我有以下方法:Junit的测试迫使例外

public Object method(){ 
try 
{ 
     privatevoidmethod1(); 
     privatevoidmethod2(); 
} 
catch(Exception e) 
{ 
     Log.debug(e); 
} 
    return object; 
} 

如何强制异常,所以我可以测试调试电话吗?

回答

3

撇开如何测试调试调用,通常会通过提供合适的输入来触发异常,以便创建/抛出异常。如果这不合适,则替代方案是提供已经被配置/写入以引发异常的替代(模拟)组件,例如

public MyClass(MyInjectedComponent component) { 
    this.component = component; 
} 

,你会为你的测试MyInjectedComponent的实现,将抛出一个异常(用于测试目的)。将组件注入其他组件的方法称为dependency injection,值得研究。

我通常会为此使用一个模拟框架(例如Mockito或类似的)。然而,上述的一个微不足道的实现可能是:

public class MyImplementationForTesting extends MyInjectedComponent { 
    public void method() throws Exception { 
     throw new Exception(); 
    } 
} 
+0

我有一个测试,引发异常,我可以成功地断言它。但是如果我需要声明日志声明被调用呢? – sotn 2015-06-13 07:07:20

+0

我会模拟记录组件并注入它 – 2015-06-13 11:38:36