java单元测试规范_Java单元测试编码规范
包结构规范
单元测试包结构和源码结构必须保持一致,如下图所示:
文件命名规范
单元测试文件名字是由“被测试文件名 + Test”组成,如下图所示
代码编写规范
基础单元测试类
被各个单元测试继承,代码如下
package com.cntest.su.demo;
import com.cntest.su.DemoApplication;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
/**
* Description: 基础测试类
* Date: 2018/3/7 14:23
*/
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes =DemoApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public abstract class BaseTest {
}
Controller单元测试规范
Controller负责restful接口输出,测试包括post接口和get接口
接口测试参照以下代码
package com.cntest.su.demo.controller;
import com.cntest.su.demo.BaseTest;
import org.junit.Before;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.RequestBuilder;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
/**
* Description: controller test demo
* Date: 2018/3/7 11:34
*/
public class DemoControllerTest extends BaseTest{
//@Autowired
private MockMvc mockMvc;
@Autowired
private WebApplicationContext wac;
@Before
public void setup(){
//MockMvcBuilders使用构建MockMvc对象 (项目拦截器有效)
mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();
//单个类 拦截器无效
// mockMvc = MockMvcBuilders.standaloneSteup(userController).build();
}
/**
* test hi interface
*
* @throws Exception
*/
@Test
public void testHi() throws Exception {
String name = "test";
// 1、get查一下接口
RequestBuilder request = get("/demo/hi").param("name", name);
mockMvc.perform(request)
.andExpect(status().isOk())
.andExpect(content().string("hi:" + name));
}
}
Service单元测试规范
service层负责业务逻辑的实现,单元测试规范参照以下代码
package com.cntest.su.demo.service;
import com.cntest.su.demo.BaseTest;
import org.junit.Assert;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
/**
* Description: service unit test
* Date: 2018/3/7 14:23
*/
public class DemoServiceTest extends BaseTest {
@Autowired
private DemoService demoService;
@Test
public void testHi(){
String name = "test";
Assert.assertEquals(demoService.hi(name), "hi:" + name);
}
}
Dao单元测试规范
dao层负责数据的获取,单元测试参照以下代码
package com.cntest.su.demo.dao;
import com.cntest.su.demo.BaseTest;
import com.cntest.su.demo.entity.User;
import org.junit.Assert;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.annotation.Rollback;
import org.springframework.transaction.annotation.Transactional;
/**
* Description: demo dao test
* Date: 2018/3/7 14:57
*/
@Transactional
public class UserDaoTest extends BaseTest {
@Autowired
private UserDao userDao;
@Test
@Rollback
public void testGet() {
userDao.insert(3, "AAA", 20);
User u = userDao.getById(3);
Assert.assertEquals(20, u.getAge().intValue());
Assert.assertEquals("AAA", u.getName());
}
}
java单元测试规范_Java单元测试编码规范相关推荐
- 《规范》前端编码规范
概述 本规范旨在为前端程序的开发者提供规范化最新的指导,可用于程序员个人编译环境以及研发团队集成环境等场合的代码规范化检查: 不管有多少人共同参与同一项目,一定要确保每一行代码都像是同一个人编写的: ...
- C#命名规范中文版/C#编码规范中文版
C#命名规范中文版/C#编码规范中文版 示例 /******************************************************************** Descrip ...
- 华为java安全编码规范_Java安全编码之SQL注入
随着互联网的发展,Java语言在金融服务业.电子商务.大数据技术等方面的应用极其广泛.Java安全编码规范早已成为SDL中不可或缺的一部分.本文以Java项目广泛采用的两个框架Hibernate和My ...
- Java入门代码注释与编码规范(羊驼)
一.代码注释 1.单行注释 "//"为单行注释标记,从符号"//"开始直到换行位置的所有内容均做为注释而被编辑器忽略 //注释内容 2.多行注释 "/ ...
- Java代码可理解性/可读性及编码规范
目录 目录 0.写在前面 1.可理解性的标准(alias:可读性) 1.1.Code quality measurement:WTFs/min 1.2.Metrics 1.3.How to do in ...
- java代码开发规范_java代码开发规范
一 编码规范 1.1 命名规范 代码中的命名均不能以特殊字符(如下划线.$#符号)开始或结束. 反例: _name / #Object 2. 代码中的命名严禁使用拼音与英文混合的方式,更不 ...
- java 单元测试用例_Java 单元测试及JUnit的使用
Java 单元测试: 单元测试是开发者编写的一小段代码,用于检测被测代码的一个很小的.很明确的功能是否正确. 单元测试的方法: 人工静态分析:人工阅读检测代码 自动静态分析:使用代码复查工具检查 自动 ...
- c++ doxygen 注释规范_[代码规范]Go语言编码规范指导
本规范旨在为日常Go项目开发提供一个代码的规范指导,方便团队形成一个统一的代码风格,提高代码的可读性,规范性和统一性.本规范将从命名规范,注释规范,代码风格和 Go 语言提供的常用的工具这几个方面做一 ...
- 函数 注释规范_Go语言编码规范
本规范旨在为日常Go项目开发提供一个代码的规范指导,方便团队形成一个统一的代码风格,提高代码的可读性,规范性和统一性.本规范将从命名规范,注释规范,代码风格和 Go 语言提供的常用的工具这几个方面做一 ...
最新文章
- Auty 2017——WebMonitor接口线上检测平台
- mysql 1146错误
- 程序员最真实的10个瞬间
- php按时间分组的sql语句,(SQL语句)按指定时间段分组统计
- Linux命令之stty
- JAVA 日期时间类使用方法
- Shell 根据名称杀掉进程
- 黑马程序员—黑马程序员CEO方立勋致全体员工和同学们的公开信
- “2016年度优秀软件工程造价师”“工信部行业标准《软件研发成本度量规范》2016年度应用示范单位” 评选活动正式启动...
- maya 替换名称_Maya玛雅入门教程 MAYA粒子替换功能和Mel命令colorAtPoint教程
- 十分钟免费拥有永久网站
- php 逻辑思维题,倘若3分钟内,你能答对这道智力题,说明你的逻辑思维能力很强...
- 密集芯片的焊接技巧:从LQFP64说起
- 10-A. 在职研究生(多重继承)
- 储留香:从丞相说到文件系统
- python 梦幻西游_tensorflow实践:梦幻西游人物弹窗识别(二)
- Windows电脑添加和删除路由(附管理员打开cmd方法)
- 目标检测 TP\FP\FN\TN如何理解?FN和TN无意义
- 【Unity3D】利用物体碰撞检测、键盘输入处理完成平衡球游戏
- linux系统dm数据库安装
热门文章
- 图像中目标的绝对位置信息(2)--Global Pooling, More than Meets the Eye: Position Information is Encoded Channel-
- html5超链接总结,最全的超链接知识汇总
- Android RIL 调试分析全记录
- ppp在linux下的编译和安装、问题
- 实验法确定控制对象模型的几种方法:
- Paper reading (八十二):Maturation of the Infant Respiratory Microbiota, Envir Drivers, and Health cons
- 公共DNS服务Public DNS+正式上线
- Git笔记:命名规范
- 查无此人!冒充中科大少年班校友的 AI 公司 CEO 被官方实锤
- HTTP 2 还没整明白呢,HTTP 3 又来了?