首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SpringJUnit4ClassRunner进行Junit测试

使用SpringJUnit4ClassRunner进行Junit测试
EN

Stack Overflow用户
提问于 2020-07-24 14:45:06
回答 1查看 101关注 0票数 0

我正在尝试使用SpringJUnit4ClassRunner创建junit测试用例。

代码语言:javascript
复制
@Configuration
@ComponentScan(basePackages = { "com.controller",
        "com.service",
        "com.repository" })
class CustomConfiguration {

}

@RunWith(SpringJUnit4ClassRunner.class)
@org.springframework.test.context.ContextConfiguration(classes = CustomConfiguration.class)
public class Test {

    @InjectMocks
    @Spy
    private EmployeeController employeeController;

    @Mock
    EmployeeService employeeService;

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

    @org.junit.Test
    public void test() throws Exception {

        Employee employee = new Employee();
        employee.setEmailId("admin@gmail.com");
        employee.setFirstName("admin");
        employee.setLastName("admin");

        Employee employee = employeeController.createEmployee(employee);
        assertNotNull(employee);
    }

}

它给出的错误是没有类型为EmployeeRepository的限定bean。

EN

回答 1

Stack Overflow用户

发布于 2020-07-24 15:21:29

似乎即使您有一个自定义配置类用于测试,存储库bean也不会通过类路径扫描在后台创建。如果您的目标是集成测试用例而不是junit测试用例,因为您提供的代码中似乎没有模拟任何东西,那么为什么不尝试使用更新的注释版本,比如使用SpringRunner.class而不是SpringJunit4Runner.class,如果您的spring版本支持它的话。如果你只是想创建一个单元测试用例。为您想模拟的任何东西创建一个模拟bean:

代码语言:javascript
复制
@Mock
SomeRepository repo;

这个mock应该在junit启动时自动注入到您的服务bean中。如果你使用的是springboot,那么:

代码语言:javascript
复制
@RunWith(SpringRunner.class)
@SpringBootTest
public class Test { 
  
    @Mock
    EmployeeService employeeService;
 
    @InjectMocks
    private EmployeeController employeeController;

    @org.junit.Test
    public void test() throws Exception {

        Employee employee = new Employee();
        employee.setEmailId("admin@gmail.com");
        employee.setFirstName("admin");
        employee.setLastName("admin");

        when(employeeService.save(any)).thenReturn(employee);
        Employee employee = employeeController.createEmployee(employee);
        assertNotNull(employee);
    }

}

上面是一个在springboot中进行单元测试的典型例子,但是对于你的控制器类,springboot提供了注释@WebMvcTest或者你想要做的web层only.If单元测试,请阅读doc

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63068222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档