Mockito失败的基本例子

时间:2017-09-27 08:27:04

标签: java testing junit mockito

我是simito的新手,所以我试着学习一些基本的例子。

这是我的服务。

public class MyCoolServiceImpl implements MyCoolService{

    public String getName() {
        return "String from service";
    }

}

MyCoolService只是一个界面

public interface MyCoolService {

    public String getName();
}

我有一个简单的用例:

public class SomeUseCase {
    private MyCoolService service = new MyCoolServiceImpl();

    public String getNameFromService(){
        return service.getName();
    }
}

什么都很复杂。所以我按如下方式编写测试类:

public class SomeUseCaseTest {
    @Mock
    MyCoolService service;

    SomeUseCase useCase = new SomeUseCase();

    @Before
    public void setUp(){
        initMocks(this);

        when(service.getName()).thenReturn("String from mockito");
    }


    @Test
    public void getNameTest(){

        String str = useCase.getNameFromService();

        assertEquals("String from mockito", str);
    }
}

所以,据我所知,str应该包含"String from mockito",因为我告诉mockito在调用service.getName()时返回该字符串,但是我的测试失败,因为它返回{{ 1}}。

我在这里缺少什么?我误解了mockito是如何运作的吗?

1 个答案:

答案 0 :(得分:1)

你必须告诉mockito注入创建的模拟的位置。在您的情况下,您只需使用@InjectMocks注释:

public class SomeUseCaseTest {
    @Mock
    MyCoolService service;

    @InjectMocks
    SomeUseCase useCase = new SomeUseCase();

    ....
}