SpringBoot中使用测试

环境:JDK1.8、MAVEN 3.6.1、eclipse

1.导入测试依赖

当前的pom文件

 <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

   <parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.2.4.RELEASE</version>
		<relativePath />
	</parent>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<!-- 导入测试模块 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
		</dependency>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
				</configuration>
			</plugin>
		</plugins>
	</build>

2.创建入口类

当前的Application类中的内容:

/**
 * @description 使用SpringBoot中的测试
 * @author hy
 * @date 2019-08-16
 */
@SpringBootApplication
public class Application {	

	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
	}
}

3.创建简单的Controller层

当前的TestController类的内容:

/**
 * @description 创建简单的测试controller层
 * @author hy
 * @date 2019-08-16
 */
@RestController
public class TestController {
	@RequestMapping("/testApp")
	public String testApp() {
		return "【测试成功】!";
	}
}

4.创建测试类

当前的ApplicationTest类中的内容:

/**
 * @description 创建测试类用于测试当前的
 * @author admin
 * @date 2019-08-16
 */
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)//加载启动类
@WebAppConfiguration//申明当前是web项目,可以注入WebApplicationContext
public class ApplicationTest {

	MockMvc mvc;

	@Autowired
	WebApplicationContext webApplicationContext;

	//测试之前
	@Before
	public void startUp() {
		// 通过MockMvcBuilders和当前web应用创建MockMvc
		mvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
	}

	@Test
	public void testTestController() throws Exception {
		String uri = "/testApp";
		MvcResult result = mvc.perform(MockMvcRequestBuilders.get(uri).accept(MediaType.APPLICATION_JSON)).andReturn();
		// 获取响应状态码
		int status = result.getResponse().getStatus();
		// 获取返回的响应体
		String content = result.getResponse().getContentAsString();

		Assert.assertEquals("错误,正确的返回值为:2000", 200, status);
		System.out.println("响应状态码:" + status);
		System.out.println("返回值:" + content);
	}
}

5.SpringBoot 1.2.4.RELEASE的测试

启动当前的testTestController方法结果成功!

6.SpringBoot 2.1.18.RELEASE的测试

主要区别在于测试类的内容


@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = SpringBootDataRestDocApp.class)
@WebAppConfiguration
public class AppTest {

	MockMvc mvc;

	@Autowired
	WebApplicationContext webApplicationContext;

	// 测试之前
	@Before
	public void startUp() {
		// 通过MockMvcBuilders和当前web应用创建MockMvc
		mvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
	}

	@Test
	public void shouldReturnDefaultMessage() throws Exception {
		this.mvc
				.perform(MockMvcRequestBuilders.get("/testApp").accept(MediaType.APPLICATION_JSON))
				.andExpect(MockMvcResultMatchers.status().isOk()).andDo(MockMvcResultHandlers.print());
	}
}

这里@SpringBootTest(classes=SpringBootDataRestDocApp.class)@WebAppConfiguration与上面不一致,其他的基本一致

7.总结

1.使用SpringBoot中测试web项目的时候,需要导入依赖

2.在1.2.4.RELEASE测试类中上面需要添加:

  • @RunWith(SpringJUnit4ClassRunner.class)
  • @SpringApplicationConfiguration(classes = 入口类)
  • @WebAppConfiguration

3.在2.1.18.RELEASE测试类中上面需要添加:

  • @RunWith(SpringJUnit4ClassRunner.class)
  • @SpringBootTest(classes = 入口类)
  • @WebAppConfiguration

3.在当前内中注入WebApplicationContext对象,并通过mvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();获取MockMvc对象

4.通过当前的MockMvc对象可以访问当前@RequestMapping中的路径,通过mvc.perform(MockMvcRequestBuilders.get(uri).accept(MediaType.APPLICATION_JSON)).andReturn();//返回MvcResult

5.最后通过MvcResult获取响应体,和响应码!

以上纯属个人见解,如有问题请联系本人!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值