如何使用Powermock模拟void私有方法抛出Abstract Exception?

问题描述 投票:0回答:1

在为方法someMethod1编写单元测试用例时,我有一个用例,我试图确保在调用方法(someMethod2)时抛出抽象异常(AnalysisException)。被测试的类是JdbcTemplateSampleImpl。

public class JdbcTemplateSampleImpl {

   public void someMethod1() {
      someMethod2();
   }

   private void someMethod2() throws AnalysisException  {
    // some code here
   }
}

我正在使用PowerMockito这样做

@Test(expected = com.test.AnalysisException.class)
public void abstractClassExceptionCheck2Test1()  throws Throwable  {
    JdbcTemplateSampleImpl jdbcTemplateSampleImpl1 = 
              PowerMockito.spy(jdbcTemplateSampleImpl0);
    PowerMockito.doThrow(mock(AnalysisException.class)).
             when(jdbcTemplateSampleImpl1,"classCheck2");    
    jdbcTemplateSampleImpl1.abstractClassExceptionCheck2();
}

但是在执行测试用例时,我遇到了这样的错误

java.lang.Exception:意外的异常,预期“com.test.AnalysisException”但是“java.lang.NullPointerException”

junit powermockito
1个回答
0
投票

doThrow方法调用之外模拟异常。

AnalysisException e = mock(AnalysisException.class);
PowerMockito.doThrow(e).
         when(jdbcTemplateSampleImpl1,"classCheck2");   
© www.soinside.com 2019 - 2024. All rights reserved.