Junit5でのテストコードの覚書
公開日: 2023/7/26
今日一日はまったので、覚書。
Junit5Controller.java
@Controller
public class Junit5Controller {
@RequestMapping("/Junit5")
public @ResponseBody String greeting() {
return "Hello, World";
}
}
@SpringBootTest
@AutoConfigureMockMvc
class Junit5ControllerTest {
@Autowired
private MockMvc mockMvc;
@Test
public void shouldReturnDefaultMessage() throws Exception {
this.mockMvc.perform(get("/Junit5")).andDo(print())
.andExpect(content().string(containsString("Hello, World")));
}
}
@WebMvcTestではエラーが出る。
1. 依存関係の挿入
インターフェイスを作成し使用した場合。
@SpringBootTest
@AutoConfigureMockMvc
class Test010ControllerTest {
@Autowired
private MockMvc mockMvc;
@Autowired
private JdbcTemplate jdbcTemplate;
@MockBean
private IndexListDao service;
@Test
void test() throws Exception {
String sql = "SELECT * FROM index_list WHERE screen_id='Test001'";
IndexListDto dto = jdbcTemplate.queryForObject(sql, new IndexRowMapper());
when(service.findByScreenId("Test010")).thenReturn(dto);
this.mockMvc.perform(get("/Test010"))
.andExpect(status().isOk()).andExpect(content().string(containsString("Test001")));
}
}
このコードでは、モックにより、screenIdを書き換えている。
when(service.findByScreenId("Test010")).thenReturn(dto);の部分で、”Test010”以外にするとエラーになる。