Java Mockito模拟服务类

Java Mockito模拟服务类,java,mockito,Java,Mockito,我想将mocks注入我的接口,而不是我的服务类,到目前为止,Mockito是不可能的(我使用的是mockito2.8.9)。我使用了SpringBoot,并且使用@MockBean我能够测试服务的接口,但是使用SpringMvc的@Mock我只能测试一个具体的类,为什么以及我可以做些什么来测试服务 关于如何使其达到接口级别的任何建议 @RunWith(MockitoJUnitRunner.class) @ContextConfiguration(classes = EmployeeService

我想
将mocks
注入我的接口,而不是我的服务类,到目前为止,Mockito是不可能的(我使用的是mockito2.8.9)。我使用了SpringBoot,并且使用
@MockBean
我能够测试服务的接口,但是使用SpringMvc的
@Mock
我只能测试一个具体的类,为什么以及我可以做些什么来测试服务

关于如何使其达到接口级别的任何建议

@RunWith(MockitoJUnitRunner.class)
@ContextConfiguration(classes = EmployeeServiceImpl.class)
public class EmployeeServiceTest {
    @org.mockito.Mock
    private EmployeeDao employeeDao; 

    @InjectMocks
    private EmployeeServiceImpl employeeService ;

    @Before
    public void initMocks() {
        MockitoAnnotations.initMocks(this);
    }

    @Test
    public void SaveEmployee() throws Exception {
        Employee employee = new Employee();
        employee.setEmployeeName("valentine");
        employee.setSalary(400);
        employee.setDepartmentId(1);
        employee.setEmployeeId(1);

         Employee employee1 ;
         when(employeeDao.addEmployee(employee)).thenReturn(employee);

        employee1  = employeeService.saveEmployee(employee);

        org.junit.Assert.assertNotNull(employee);
        assertEquals(employee1.getSalary(), employee.getSalary());

       Mockito.verify(employeeDao).addEmployee(employee);
    }

所以我首先在返回Dao接口的配置类中创建Bean,从而解决了这个问题

@Profile("test")
@Configuration
public class Config {

    @Bean
    @Primary
    public EmployeeDao employeeDao(){
        return Mockito.mock(EmployeeDao.class);
    }
}
然后我在测试中使用了这个概要文件,并将configContxt设置为我的Config类

@ActiveProfiles("test")
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes ={ EmployeeServiceImpl.class, Config.class})
public class EmployeeServiceTest1 {


    @Autowired
    private EmployeeDao employeeDao;

    @Autowired
    private EmployeeService employeeService;

你的问题不清楚。当您测试一个具体的类(实现)时,您需要为该类使用InjectMock,而不是它的InterfaceBoot。但是在springboot中,当我使用@mockBean时,我能够测试服务