对一个调用外部服务的类进行单元测试

时间:2018-12-04 20:59:01

标签: java unit-testing mocking mockito powermock

我有以下课程:

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

}

不幸的是,由于未返回模拟类,因此我在单元测试中遇到了空引用异常。我该如何解决?

2 个答案:

答案 0 :(得分:2)

您应该使用

Activity Name

不是_sc.doSomething("abc");

答案 1 :(得分:2)

首先请确保您的测试类已使用MockitoJUnitRunner进行注释。

@RunWith(MockitoJUnitRunner.class)

第二,在您的测试中,您应该使用目标测试类“ _sc”,该类随模拟一起注入。