我正在尝试为我的方法创建一个JUnit测试。我有一个方法
public a(int a, int b){
a.setA(12);
Injec inj = new Injec();
inj.check();
return (a*b);
}
我想跳过此部分,因为它使用HTTP请求
Injec inj = new Injec();
inj.check();
我正在使用
when(Matchers.<Injec> anyObject().check()).thenReturn(null);
但它给了我异常
答案 0 :(得分:3)
使用Mockito,您将无法使用当前代码执行此操作。
问题是方法a
直接通过调用默认构造函数创建一个新的Injec
对象。 Mockito无法模拟这个新实例,因为它无法控制它。
因此,您需要重构代码。有几种可能的解决方案:
Injec
实例作为参数传递给a
方法。这样,您可以模拟实例并对方法进行模拟。Injec
实例注入您的类(例如使用构造函数注入)。如果您使用JMockit,正如@Rogério所述,这是可能的,您只需将@Mocked Injec
添加到测试类中,Injec
实例将被模拟已创建。
答案 1 :(得分:0)
使用JMockit,您可以按如下方式模拟Injec
课程:
@RunWith(JMockit.class)
public class MyTest
{
private ClassToTest underTest;
@Test
public void testA(@Mocked Injec injec) {
underTest.a(10, 20);
// your assertions
}
}