junit 基础使用
junit百度百科:
JUnit是一个Java语言的单元测试框架。它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个。 JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。
JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework)。Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。
Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。
junit作用:
我们知道 Junit 是一个单元测试框架,那么使用 Junit 能让我们快速的完成单元测试。
通常我们写完代码想要测试这段代码的正确性,那么必须新建一个类,然后创建一个 main() 方法,然后编写测试代码。如果需要测试的代码很多呢?那么要么就会建很多main() 方法来测试,要么将其全部写在一个 main() 方法里面。这也会大大的增加测试的复杂度,降低程序员的测试积极性。而 Junit 能很好的解决这个问题,简化单元测试,写一点测一点,在编写以后的代码中如果发现问题可以较快的追踪到问题的原因,减小回归错误的纠错难度。
junit用法:
使用IDEA创建project时将自动导入junit框架。在文件目录能够看到在src目录下包含着main和test文件夹
编写需要测试的用例:
public class Calculator { /**
* 传入两个参数,求和
* @param a
* @param b
* @return
*/
public int add(int a,int b){
return a+b;
} /**
* 传入两个参数,求差
* @param a
* @param b
* @return
*/
public int sub(int a,int b){
return a-b;
} }
不用junit编写测试类:
public class CalculatorTest { public static void main(String[] args) {
Calculator c = new Calculator(); //测试 add()方法
int result = c.add(1, 2);
if(result == 3){
System.out.println("add()方法正确");
} //测试 sub()方法
int result2 = c.sub(2, 1);
if(result2 == 1){
System.out.println("sub()方法正确");
}
}
}
那么我们可以看到,不用 Junit 只能写在 main()方法中,通过运行结果来判断测试结果是否正确。这里需要测试的只有两个方法,如果有很多方法,那么测试代码就会变得很混乱。
使用junit编写测试类:
public class CalculatorTest { @Test
//测试 add()方法
public void testAdd(){
Calculator c = new Calculator();
int result = c.add(1, 2);
Assert.assertEquals(result, 3);
} @Test
//测试 sub()方法
public void testSub(){
Calculator c = new Calculator();
int result = c.sub(2, 1);
Assert.assertEquals(result, 1);
}
}
那么由上面可以看到,使用 Junit 不需要创建 main() 方法,而且每个测试方法一一对应,逻辑特别清晰。可能有读者会问,这样写代码量也并不会减少啊,那么你接着往下看:
首先介绍 Junit 的几种类似于 @Test 的注解:
1.@Test: 测试方法
a)(expected=XXException.class)如果程序的异常和XXException.class一样,则测试通过
b)(timeout=100)如果程序的执行能在100毫秒之内完成,则测试通过
2.@Ignore: 被忽略的测试方法:加上之后,暂时不运行此段代码
3.@Before: 每一个测试方法之前运行
4.@After: 每一个测试方法之后运行
5.@BeforeClass: 方法必须必须要是静态方法(static 声明),所有测试开始之前运行,注意区分before,是所有测试方法
6.@AfterClass: 方法必须要是静态方法(static 声明),所有测试结束之后运行,注意区分 @After
那么上面的例子,我们可以看到,每个 @Test 方法中都有 Calculator c = new Calculator();即类的实例化,那么我们可以将其放入到 @Before 中
public class CalculatorTest {
Calculator c = null; @Before
public void testBeforeClass(){
c = new Calculator();
}
@Test
//测试 add()方法
public void testAdd(){
int result = c.add(1, 2);
//Assert.assertEquals(result, 3);
//等价于:
if(result == 3){
System.out.println("add()方法正确");
}
} @Test
//测试 sub()方法
public void testSub(){
int result = c.sub(2, 1);
//Assert.assertEquals(result, 1);
//等价于:
if(result == 1){
System.out.println("sub()方法正确");
}
} }
同理:别的注解用法我们用一个类来看:
public class JunitTest {
public JunitTest() {
System.out.println("构造函数");
} @BeforeClass
public static void beforeClass(){
System.out.println("@BeforeClass");
} @Before
public void befor(){
System.out.println("@Before");
} @Test
public void test(){
System.out.println("@Test");
} @Ignore
public void ignore(){
System.out.println("@Ignore");
} @After
public void after(){
System.out.println("@After");
} @AfterClass
public static void afterClass(){
System.out.println("@AfterClass");
}
}
结果:
@BeforeClass
构造函数
@Before
@Test
@After
@AfterClass
注意:编写测试类的原则:
①测试方法上必须使用@Test进行修饰
②测试方法必须使用public void 进行修饰,不能带任何的参数
③新建一个源代码目录来存放我们的测试代码,即将测试代码和项目业务代码分开
④测试类所在的包名应该和被测试类所在的包名保持一致
⑤测试单元中的每个方法必须可以独立测试,测试方法间不能有任何的依赖
⑥测试类使用Test作为类名的后缀(不是必须)
⑦测试方法使用test作为方法名的前缀(不是必须)
junit 基础使用的更多相关文章
- Junit基础整理
项目引进Junit包 对待测试类新建testcase testcase类分为:@RunWith() -----@RunWith(suite.class)测试套件类打包测试 -----@RunWith( ...
- junit基础篇、中级篇-实例代码
学习文章: http://blog.csdn.net/andycpp/article/details/1327147 http://wenku.baidu.com/link?url=C27gDEj0l ...
- JUnit基础及第一个单元测试实例(JUnit3.8)
单元测试 单元测试(unit testing) ,是指对软件中的最小可测试单元进行检查和验证. 单元测试不是为了证明您是对的,而是为了证明您没有错误. 单元测试主要是用来判断程序的执行结果与自己期望的 ...
- Java Junit 基础笔记
Junit 1. 概念 JUnit是一个Java语言的单元测试框架. 单元测试:单元测试(英语:Unit Testing)又称为模块测试, 是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工 ...
- junit基础学习之-参数初始化(5)
package swust.edu.cn.postdoctors.service.impl; import java.util.Arrays; import java.util.Collection; ...
- junit基础学习之-测试service层(3)
测试步骤: 在之前的文章中已经加了junit的环境,这就不需要了. 1.加载junit类,spring配置文件,指明junit测试器,@Runwith 2.定义变量,service,不可以使用spri ...
- junit基础学习之-测试controller层(2)
准备工作: eclipse本身带有junit4,可以直接build path,加入junit. 连接数据库的配置文件需要修改,之前的文件是采用properties+xml文件的形式,但是在测试的时候因 ...
- junit基础学习之-简介(1)
JUnit介绍 JUnit是一个开源的Java单元测试框架,由 Erich Gamma 和 Kent Beck 开发完成. 1 JUnit简介 JUnit主要用来帮助开发人员进行Java的单元测试, ...
- 【单元测试】Junit 4(二)--eclipse配置Junit+Junit基础注解
1.0 前言 前面我们介绍了白盒测试方法,后面我们来介绍一下Junit 4,使用的是eclipse(用IDEA的小伙伴可以撤了) 1.1 配置Junit 4 1.1.1 安装包 我们需要三个jar ...
随机推荐
- RabbitMQ使用介绍及实例
消息列队不做过多解释了,直接讲讲rabbitmq的基本概念和路由模式. 一.安装及基本概念 rabbitmq是基于erlang编写的,所以安装rabbitmq之前需要安装erlang的环境,配置环境变 ...
- Python基础10_函数
直接贴笔记 : #!/usr/bin/env python # coding:utf-8 # 定义函数时要写成良好的注释习惯 通常用三个单引号 def test(x): ''' 计算一个y=2*x+1 ...
- centos7 安装python3.6 脚本
shell 脚本自动安装python3 # /bin/bash cd /opt yum groupinstall "Development tools" -y yum -y ins ...
- Markup解析XML——文档,说明
链接:http://pan.baidu.com/s/1slMwEc9 密码:slz7 上面是网盘的地址,因为来源已经找不到了,在这里给这个作者说声谢谢. 轻量级的XML解析器使用比较简单,下载Mark ...
- linux下的$0-n作用
电面的时候回答上来一部分了....呵呵......总结一下!!! $0 Shell本身的文件名 $1-$n 添加到Shell的各参数值.$1是第1参数.$2是第2参数… $$ Shell本身的PID( ...
- logback-spring.xml 博客分享
https://juejin.im/post/5b51f85c5188251af91a7525
- linux c 获取console 结果
getLine(char *line, const char *cmd) { FILE *pf = popen(cmd, "r"); if (pf == NULL) { ; } f ...
- tomcat报错-->'Start Tomcat v8.0 Server at localhost' has encountered a problem.
toncat报错-->'Start Tomcat v8.0 Server at localhost' has encountered a problem. 2016年04月16日 09:27:2 ...
- ubuntu 16.04 安装 网易云
现在网易云官网上下载对应版本 文件名:netease-cloud-music_1.0.0-2_amd64_ubuntu16.04.deb 进入下载目录: 正常安装会出现错误 解决的办法是换源 换源教程 ...
- 《DSP using MATLAB》Problem 7.6
代码: 子函数ampl_res function [Hr,w,P,L] = ampl_res(h); % % function [Hr,w,P,L] = Ampl_res(h) % Computes ...