JUnit Mockito Spring Boot 单元测试失败

JUnit Mocito Sprinboot UnitTest failing

我正在尝试为服务层方法编写单元测试,如果在数据库中找不到查询的项目,该方法应该 return 一条消息。我写的测试失败了,我不确定为什么。

我正在使用 Springboot 2.1.6 Java8

<!--Testing-->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>5.3.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>5.3.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-params</artifactId>
            <version>5.3.2</version>
            <scope>test</scope>
        </dependency>

测试


@ExtendWith(SpringExtension.class)
@SpringBootTest
public class HB357ServiceTest {

    @Mock
    private HB357Repository repository;

    @InjectMocks
    private HB357Service service;

@Test
    @DisplayName("ResponseId Does Not Exist")
    void testGetSurveyByResponseIdNotFound (){

        when(repository.findByResponseId("R_2agzc6I4T7TbPX0")).thenReturn(null);
        HB357 responseDoesntExist = service.getSurveyByResponseId("R_2agzc6I4T7TbPX0");
        assertEquals("Response ID not found", service.getSurveyByResponseId("R_2agzc6I4T7TbPX0") );
    }

我也尝试过将 assertEquals 更改为 assertEquals(null, service.getSurveyByResponseId("R_2agzc6I4T7TbPX0"),Response ID not found" );

服务方式

public HB357 getSurveyByResponseId (String responseId){
            HB357 survey = hb357Repository.findByResponseId (responseId);
            if(survey == null){
                throw new InvalidIdException(responseId + " does not exist.");
            }

            return survey;
        }

测试失败,给我写在服务层中的无效异常规则 - 如果我正在测试的是响应 ID 不存在,为什么测试没有通过?

这是检查 Junit5 中是否抛出异常的方法

@Test
@DisplayName("ResponseId Does Not Exist")
void testGetSurveyByResponseIdNotFound (){

     when(repository.findByResponseId("R_2agzc6I4T7TbPX0")).thenReturn(null);
     InvalidIdException thrown = Assertions.assertThrows(InvalidIdException.class, () -> service.getSurveyByResponseId("R_2agzc6I4T7TbPX0"));
     assertTrue(thrown.getMessage().contains("does not exist"));
}