joh*_*ohn 2 arrays spring unit-testing jdbc spring-boot
我知道为映射器或获取设置编写单元测试不是一件好事,但是,它就是这样,所以我陷入了如何为映射器进行单元测试的困境;
\n下面的学生组列表;
\n@Getter\n@Setter\npublic class StudentGroupList {\n\n private String studentId;\n}\nRun Code Online (Sandbox Code Playgroud)\n下面的 StudentGroupListRowMapper;
\npublic class StudentGroupListRowMapper implements RowMapper<StudentGroupList> {\n\n @Override\n public StudentGroupList mapRow(Resultset rs, int rowNum) throws SQLException {\n\n StudentGroupList studentGroupList = new StudentGroupList();\n \n studentGroupList.setStudentId(rs.getString("student_id"));\n\n return studentGroupList;\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n我在下面尝试过,但 jococo 覆盖率测试没有覆盖任何内容
\n public class TaskGroupListRowMapperTest {\n\n private ResultSet resultSet;\n private StudentGroupList studentGroupList;\n\n @Before\n public void setUp() {\n resultSet = mock(ResultSet.class);\n studentGroupList = mock(StudentGroupList.class);\n }\n\n @Test\n public void testStudentGroupListMapper() throws SQLException {\n when(resultSet.getString("student_id"))\n .thenReturn(studentGroupList.getStudentID());\n \n assertTrue(studentGroupList.getStudentId(), true);\n \n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\xc4\xb0t 表示异常;thenReturn() 可能丢失。
\n放松点,我们过去都曾尝试过理解单元测试应该做什么。
您不会仅仅为了单元测试覆盖率而对所有内容进行单元测试。当您有像 RowMapper 这样的框架回调时,这就是其中一种情况。你的代码StudentGroupListRowMapper非常简单,所以对你的 Dao 进行集成测试就可以覆盖它。无论如何,您想要进行单元测试,因此只需将其视为一个简单的类,然后让我们完成这些步骤。
您想要创建要测试的类的实例,并为其调用的任何服务提供模拟依赖项。幸运的是你StudentGroupListRowMapper没有打电话任何东西。由于您要测试的方法是 StudentGroupList mapRow(ResultSet rs, int rowNum),您必须决定是否可以提供 aResultSet和 a rowNum。由于ResultSet不是您创建的东西,您为此提供了一个模拟
ResultSet inputRs = mock(ResultSet.class);
int rowNum = 1;
Run Code Online (Sandbox Code Playgroud)
inputRs.getString("student_id")以获取学生 ID,但它是模拟的,并且不知道要返回什么,因此您必须告诉您的模拟在inputRs.getString("student_id")调用时要做什么 when(inputRs.getString("student_id")).thenReturn("student-id-1");
Run Code Online (Sandbox Code Playgroud)
StudentGroupList应该使用该方法创建"student-id-1"并应该从该方法返回。assertEquals(resultedStudentGroupList.getStudentId(),"student-id-1");
public class StudentGroupListRowMapperTest {
StudentGroupListRowMapper mapper = new StudentGroupListRowMapper();
@Test
public void testMapRow() {
ResultSet inputRs = mock(ResultSet.class);
int rowNum = 1;
when(inputRs.getString("student_id")).thenReturn("student-id-1");
StudentGroupList result = mapper.mapRow(inputRs, rowNum);
assertEquals(result.getStudentId(), "student-id-1");
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6359 次 |
| 最近记录: |