如何使我测试过的班级的私人方法调用



我实际上正在尝试测试一个需要数据库连接的方法(我目前无法进行(,所以我想测试忽略数据库连接的方法。

@Test
public void Test(){
         ExampleClass ex = new ExampleClass();
         ex.methodA();
}

我的方法正在调用内部类,该类正在调用打破我的测试的私人方法。我实际上无法称呼已测试类的私人方法,因为不可见。

public class ExampleClass{
      public methodA(){
                    .......
                    return new innerClass();
      }
         private class innerClas{
            public methodB(){
                             ..........
                              ..........
                              Object a = send(....); //This is my DB Connections that crashes.
            }
            private send(....){
                       .......... 
                         .........
            }
         }
}

我需要忽略测试类的发送方法,因为有DB连接。如果我可以固执,忽略它就足够了。

ExampleClass#methodA()中不创建innerClass的对象。而是通过构造函数或方法将此对象注入ExampleClass

现在,从测试类使用Mockito或等效的测试类模拟innerClass,并从目标方法中返回您要避免调用真实内容的模拟结果。

通过私人方法模拟使用PoweMock,添加以下注释:

@RunWith(PowerMockRunner.class)
@PrepareForTest(ExampleClass.class)
public class MyTest{
}

相关内容

  • 没有找到相关文章

最新更新