java - Spring Controller单元测试最佳实践

标签 java spring unit-testing mockito

在我的应用程序中,我有一个基于给定模式的 Controller :

public class Controller {

@Autowired
Mapper mapper;

@Autowired
Service service;

public EntityDto create(EntityDto dto) {
    Entity entity = mapper.mapToEntity(dto);
    Entity saved = service.save(entity);
    return mapper.mapToDto(saved);
}

测试此类的好方法是什么?我看到了一些可能性:

  1. 使用 Mockito 模拟所有内容并检查从一个模拟中检索到的对象是否传递给另一个模拟
  2. 在运行的 Spring 上下文中进行集成测试
  3. 跳过 Controller 的测试,因为它不包含业务逻辑

以上任何一项都可以吗?也许其他方式?

最佳答案

我假设你正在使用 Spring boot 应用程序,你可以在测试包下编写你的测试类,如下所示:

@RunWith(SpringRunner.class)
@ContextConfiguration(classes = AppConfig.class)
public class TestController {

@Autowired
Controller controller;

@Test
public void test() {
    fail("Not yet implemented");
}

@Test
public void testGroupAlert() throws EntityNotFoundException, Exception {

    Entitydto dto = new Entitydto() //Initialize your Entitydto object
    controller.create(dto);
}

关于java - Spring Controller单元测试最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54692043/

相关文章:

java - 适用于 2 个或更多应用程序的性能管理工具

java - Sip Servlet 应用程序未启动

java - 更多 Mockito RETURNS_DEEP_STUBS 问题

c# - 所有测试私有(private)方法的方法似乎都失败了 (c#)

node.js - Node-Jasmine 没有按预期失败

java - 如何在 java 中使 JFrame 模糊?

java - 两个线程调用wait和notify

java - Spring:@Validated 和@Async 不能一起工作

spring mvc i18n : If key not in properties file, 如何设置默认语言环境?

java - 在 Spring Security 中实现 UserDetails 和 CredentialsContainer