我正在尝试为我的方法创建一个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);


但这给了我例外

最佳答案

使用Mockito,您将无法使用当前代码执行该操作。

问题在于方法a直接通过调用默认构造函数来创建一个新的Injec对象。 Mockito无法模拟该新实例,因为它无法对其进行任何控制。

因此,您需要重构代码。有两种可能的解决方案:


Injec实例作为参数传递给a方法。这样,您可以模拟实例并将模拟提供给方法。
Injec实例注入到您的类中(例如,使用构造函数注入)。


如果您使用的是JMockit(如@Rogério所述),则可以这样做,您只需将@Mocked Injec添加到测试类中,并且Injec实例在创建时将被模拟。

07-28 13:21