今天学习Spring Boot时,使用MockMvc对Controller进行单元测试,发现无法导入equalTo()。
考虑可能是没有导入方法,但是IntelliJ IDEA没有出现导入方法的提示,无法自动补全。在网上找到解决方法如下:
版权声明:本文为博主原创文章,禁止转载
作者博客:codesong.cn
updated: 2019-10-22 10:13:14
导入方法:
import static org.hamcrest.Matchers.equalTo;
代码功能为:controller类中在http://localhost:8080/hello输出"Hello World",在测试代码中,使用MockMvc实现对HTTP请求的模拟,验证controller层是否正确。
代码功能十分简单,只是为了测试MockMvc的使用,具体如下:
Controller类代码:
@RestController
public class HelloWorldController {
@RequestMapping("/hello")
public String index() {
return "Hello World";
}
}
测试类代码:
import com.example.demo.controller.HelloWorldController;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import static org.hamcrest.Matchers.equalTo; //此处应导入equalTo方法
mport static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@RunWith(SpringRunner.class)
@SpringBootTest
public class HelloWorldTests {
private MockMvc mvc;
@Before
public void setUp() throws Exception {
mvc = MockMvcBuilders.standaloneSetup(new HelloWorldController()).build();
}
@Test
public void getHello() throws Exception {
mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andExpect(content().string(equalTo("Hello World"))); //使用equalTo方法
System.out.println("Test End");
}
}
测试结果如下
MockMvc测试结果