文档章节

Spring Boot 使用 Junit

阿刚ABC
 阿刚ABC
发布于 2017/07/06 14:38
字数 546
阅读 83
收藏 1

JUnit是一个Java语言的单元测试框架。它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个。 JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。

 

通过观看https://my.oschina.net/sdlvzg/blog/1154281创建项目,再执行以下操作

 

在pom.xml中引入依赖包

		<!-- 测试依赖包 -->
		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
		</dependency>

 

编写代码:

编写Service

package org.lvgang.service;

import org.springframework.stereotype.Service;

/**
 * 测试类
 * @author Administrator
 */
@Service
public class HelloService {

	public String getName() {
		return "hello";
	}
}

编写Controller

package org.lvgang.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * Hello测试类
 * @author Administrator
 *
 */
@RestController   // 等价于@Controller+@RequstMapping
public class HelloController {
	  @RequestMapping("/hello")  
	  public String hello(){  
	    return "Hello world test!";  
	  }  
}

测试类编写及运行:

测试Service

package org.lvgang.service;

import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

/**
 * 测试类
 * @author Administrator
 *
 */
//SpringBoot1.4版本之前用的是SpringJUnit4ClassRunner.class
@RunWith(SpringRunner.class)
//SpringBoot1.4版本之前用的是@SpringApplicationConfiguration(classes = Application.class)
@SpringBootTest
public class HelloServiceTest {

	@Autowired
	private HelloService helloService;

	/**
	 * 测试HelloService类的getName方法
	 */
	@Test
	public void testGetName() {
		Assert.assertEquals("hello", helloService.getName());
	}
}

    在上面类中右击==》Run As ==》1Junit Test ,执行测试类,结果如下:

 

测试Controller(两个方法)

    方法一:

package org.lvgang.controller;


import static org.hamcrest.Matchers.equalTo;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThat;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
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.MvcResult;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;

/**
 * 测试类
 * @author Administrator
 *
 */
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@AutoConfigureMockMvc
public class HelloControllerTest {

	@Autowired
    private MockMvc mvc;


    @Test
    public void testHello() throws Exception {
        String uri = "/hello";
        MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.get(uri).accept(MediaType.APPLICATION_JSON))
            .andReturn();
        int status = mvcResult.getResponse().getStatus();
        String content = mvcResult.getResponse().getContentAsString();
        System.out.println("content:"+content);
        System.out.println("status:"+status);
        assertEquals("错误,正确的返回值为200", status, 200);
		assertThat(content, equalTo("\"Hello world test!\""));
        
    }
}

   

  在上面类中右击==》Run As ==》1Junit Test ,执行测试类,结果如下:

    方法二:

package org.lvgang.controller;

import static org.hamcrest.Matchers.equalTo;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThat;

import java.net.URL;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.embedded.LocalServerPort;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.web.client.TestRestTemplate;
import org.springframework.http.ResponseEntity;
import org.springframework.test.context.junit4.SpringRunner;

/**
 * 测试类
 * 
 * @author Administrator
 *
 */
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class HelloControllerTest2 {
    @LocalServerPort
    private int port;

    private URL base;

	@Autowired
	private TestRestTemplate template;
	

    @Before
    public void setUp() throws Exception {
        this.base = new URL("http://localhost:" + port + "/hello");
    }

	@Test
	public void testHello() throws Exception {
		System.out.println("base.toString():"+base.toString());
		ResponseEntity<String> response = template.getForEntity(base.toString(), String.class);
		int status = response.getStatusCodeValue();
		String content = response.getBody();
		assertEquals("错误,正确的返回值为200", status, 200);
		assertThat(content, equalTo("Hello world test!"));
	}
}

  在上面类中右击==》Run As ==》1Junit Test ,执行测试类,结果如下:

 

© 著作权归作者所有

阿刚ABC
粉丝 43
博文 152
码字总数 118786
作品 0
济南
高级程序员
私信 提问
Spring Boot(十二)单元测试JUnit

一、介绍 JUnit是一款优秀的开源Java单元测试框架,也是目前使用率最高最流行的测试框架,开发工具Eclipse和IDEA对JUnit都有很好的支持,JUnit主要用于白盒测试和回归测试。 白盒测试:把测试...

王磊的博客
2018/11/05
241
0
在使用spring和junit是遇到的java.lang.noSuchMethodError异常

今天在使用使用spring框架时,用junit进行单元测试是遇到了如下异常,后来上网查阅了一番之后说是spring和junit有着版本兼容的问题,我使用的spring是4.24版本,junit使用的是4.11版本,jun...

ljm12345
2018/03/24
1K
3
Java Web(5) Spring 下使用Junit4 单元测试

如何在不启动Tomcat服务器的情况下对,Dao这些不依赖使用Servlet API的类来进行单元测试呢? 其实在Spring框架体系中,已经有一套自己的测试代码,其中就是依赖使用Junit来进行测试 ,不需要...

Jagery
2015/11/15
2K
0
解决org/junit/Assume$AssumptionViolatedException异常

Spring版本2.5.5,JUnit 版本 4.8.1,使用了 Spring TestContext 的 SpringJUnit4ClassRunner。一直使用这个版本的JUnit,在写简单的测试时不会抛错,直到今天开始尝试写规范的JUnit测试代 ...

吕兵阳
2014/04/15
3.3K
0
Mybatis-PageHelper的简单使用

Mybatis-PageHelper一个简洁易用的mybatis分页插件。 文档地址:https://github.com/pagehelper/Mybatis-PageHelper/blob/master/README_zh.md 加入依赖 如何使用 第一步:在中配置插件 第二...

流小文
2017/04/18
173
0

没有更多内容

加载失败,请刷新页面

加载更多

全面兼容IE6/IE7/IE8/FF的CSS HACK写法

浏览器市场的混乱,给设计师造成很大的麻烦,设计的页面兼容完这个浏览器还得兼容那个浏览器,本来ie6跟ff之间的兼容是很容易解决的。加上个ie7会麻烦点,ie8的出现就更头疼了,原来hack ie...

前端老手
20分钟前
5
0
常用快递电子面单批量打印api接口对接demo-JAVA示例

目前有三种方式对接电子面单: 1.快递公司:各家快递公司逐一对接接口 2.菜鸟:支持常用15家快递电子面单打印 3.快递鸟:仅对接一次,支持常用30多家主流快递电子面单打印 目前也是支持批量打...

程序的小猿
23分钟前
6
0
Yii 框架中rule规则必须搭配验证函数才能使用

public $store_id;public $user_id;public $page;public $limit;public $list;public $mch_list;public $cart_id;public $is_community;public $shop_id;public $cart_typ......

chenhongjiang
25分钟前
4
0
Flutter使用Rammus实现阿里云推送

前言: 最近新的Flutter项目有“阿里云推送通知”的需求,就是Flutter的App启动后检测到有新的通知,点击通知栏然后跳转到指定的页面。在这里我使用的是第三方插件Rammus来实现通知的推送,之...

EmilyWu
26分钟前
42
0
Knative 实战:三步走!基于 Knative Serverless 技术实现一个短网址服务

短网址顾名思义就是使用比较短的网址代替很长的网址。维基百科上面的解释是这样的: 短网址又称网址缩短、缩短网址、URL 缩短等,指的是一种互联网上的技术与服务,此服务可以提供一个非常短...

阿里巴巴云原生
41分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部