我有以下课程:
public class SomeClass {
private Dependency dependency;
public SomeClass(Dependency dep){
this.dependency = dep;
}
public void doSomething(String s){
Foo f = dependency.getFoo(s);
f.doWork(); // fails because f is null
}
}
我试图编写一个单元测试,以涵盖doSomething方法,其中getFoo是我尝试模拟的外部调用,如下所示:
@Mock
private Dependency dep;
@InjectMocks
private SomeClass _sc;
@Test
public void testSimple() {
Foo ff = new Foo();
when(dep.getFoo("abc")).thenReturn(ff);
SomeClass sc = new SomeClass();
sc.doSomething("abc"); // fails on null pointer exception
}
不幸的是,由于未返回模拟类,因此我在单元测试中遇到了空引用异常。我该如何解决?
答案 0 :(得分:2)
您应该使用
Activity Name
不是_sc.doSomething("abc");
答案 1 :(得分:2)
首先请确保您的测试类已使用MockitoJUnitRunner进行注释。
@RunWith(MockitoJUnitRunner.class)
第二,在您的测试中,您应该使用目标测试类“ _sc”,该类随模拟一起注入。