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"));
}
我正在尝试为服务层方法编写单元测试,如果在数据库中找不到查询的项目,该方法应该 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"));
}