Java Mockito失败的基本示例

Java Mockito失败的基本示例,java,testing,junit,mockito,Java,Testing,Junit,Mockito,我是mockito的新手,所以我试着用一些基本的例子来学习 这是我的服务 public class MyCoolServiceImpl implements MyCoolService{ public String getName() { return "String from service"; } } mycolservice只是一个接口 public interface MyCoolService { public String getNam

我是mockito的新手,所以我试着用一些基本的例子来学习

这是我的服务

public class MyCoolServiceImpl implements MyCoolService{

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

}
mycolservice
只是一个接口

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
应该包含
“来自mockito的字符串”
,因为我告诉mockito在调用
service.getName()
时返回该字符串,但是我的测试失败了,因为它返回了
“来自服务的字符串”


我错过了什么?我是否误解了mockito的工作原理?

您必须告诉
mockito
在何处注入创建的mock。在您的情况下,只需使用
@InjectMocks
注释:

public class SomeUseCaseTest {
    @Mock
    MyCoolService service;

    @InjectMocks
    SomeUseCase useCase = new SomeUseCase();

    ....
}