当前位置: 首页 > 知识库问答 >
问题:

如何使用springboot为rest控制器、服务和dao层编写junit测试用例?

钱弘壮
2023-03-14

如何为RestController,Service和DAO层编写JUnit测试用例?

我试过MockMvc

@RunWith(SpringRunner.class)
public class EmployeeControllerTest {

    private MockMvc mockMvc;

    private static List<Employee> employeeList;

    @InjectMocks
    EmployeeController employeeController;

    @Mock
    EmployeeRepository employeeRepository;

    @Test
    public void testGetAllEmployees() throws Exception {

        Mockito.when(employeeRepository.findAll()).thenReturn(employeeList);
        assertNotNull(employeeController.getAllEmployees());
        mockMvc.perform(MockMvcRequestBuilders.get("/api/v1/employees"))
                .andExpect(MockMvcResultMatchers.status().isOk());
    }

如何验证rest控制器和其他层中的CRUD方法?

共有1个答案

史阳晖
2023-03-14

您可以使用@RunWith(MockitoJUnitRunner.class)对服务层模拟DAO层组件进行单元测试。您不需要SpringRunner。为它设置类

完整的源代码

    @RunWith(MockitoJUnitRunner.class)
    public class GatewayServiceImplTest {

        @Mock
        private GatewayRepository gatewayRepository;

        @InjectMocks
        private GatewayServiceImpl gatewayService;

        @Test
        public void create() {
            val gateway = GatewayFactory.create(10);
            when(gatewayRepository.save(gateway)).thenReturn(gateway);
            gatewayService.create(gateway);
        }
    }

您可以使用@DataJpaTest与DAO层进行集成测试

    @RunWith(SpringRunner.class)
    @DataJpaTest
    public class GatewayRepositoryIntegrationTest {

        @Autowired
        private TestEntityManager entityManager;

        @Autowired
        private GatewayRepository gatewayRepository;

        // write test cases here     
    }

查看本文,了解有关使用Spring Boot进行测试的更多详细信息

 类似资料:
  • customer-Mapper.xml daoimpl.java

  • 如何编写一个适当的测试用例控制器,服务和道在Spring引导使用jUnit 5清楚的解释

  • 因此,我正在进行我的第一个Spring Boot项目,我一直在进行测试。我查了很多例子,但似乎都不管用。 这是我的控制器的当前测试: 这是可行的,但在sonarqube上,我发现我的代码覆盖率为0%,而我似乎找不到一个测试,它的覆盖率甚至超过了零。有谁能给我一个关于如何为控制器编写一个好的单元测试的例子,然后我就可以根据您的例子自己解决这个问题。 这是我的控制器: 这是我的服务(以防您需要): 还

  • 我想为RESTful API Web服务编写junit测试用例,以检查DB的响应和预期响应。这里的基本流程是REST文件(调用)- 这是我的REST文件: } 这是业务逻辑文件: } 这里的问题是如何在测试用例中提供从DB for n3获取的值,因为实际代码位于不同的数据库中,我不想清理这些数据库。因此,基本上,测试用例将在不同的空数据库上运行,在运行数据库时,我必须在测试用例执行后插入数据并清理

  • 我正在编写一个Spring boot Rest控制器的测试。这个rest控制器将一些值写入DB。 我想使用Spring为这个测试提供的内存数据库。根据这个文档,我必须用注释测试类,这导致了这个错误: 在错误堆栈跟踪中,我看到抛出了以下异常: 的replace属性 这是我正在研究的测试类: 是什么导致了这个错误? 编辑2 我在中添加了以下内容: 我创建了,内容如下: 用户名和密码是什么?我应该把它们

  • 我对Spring boot和JUnit是新手。我在Spring Boot中有一个Rest服务,在那里我接收请求,使用请求参数查询数据库,从查询中接收结果并将其作为响应发送。 我的控制器代码如下所示: 我的JdbcTemplate被作为一个单独类中的bean处理,如下所示 我的代码运行良好。 现在我想使用JUnit4为我的控制器编写单元测试。我使用MockMvc发送请求,但我的单元测试从未起飞。它总