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 ...
随机推荐
- Linux:ldd命令详解
ldd 用于打印程序或者库文件所依赖的共享库列表. 语法 ldd(选项)(参数) 选项 --version:打印指令版本号: -v:详细信息模式,打印所有相关信息: -u:打印未使用的直接依赖: -d ...
- SpringBoot的学习【2.分析HelloWorld的依赖】
1.分析引入的父类项目 引入的父类如下. 点击进去发现又引入了一个父类 点击进去发现是spring的版本控制和相应的依赖. so~这就是springboot的终极大包.想用springboot开发的时 ...
- spring集成jedis简单实例
jedis是redis的java客户端,spring将redis连接池作为一个bean配置. redis连接池分为两种,一种是“redis.clients.jedis.ShardedJedisPool ...
- Thrift-0.10.0 CenOS 7 编译错误 error: expected ')' before 'PRIu32'
Thrift-0.10.0 CenOS 7 编译错误 error: expected ')' before 'PRIu32' 在编译Thrift的时候,无论是Apache官网tar包,还是Github ...
- Python全栈之路----函数----高阶函数
变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一函数作为参数,这种函数就称之为高阶函数. 只需满足以下任意一个条件,即是高阶函数: 接收一个或多个函数作为输入 def func(x, ...
- [转] Linux运维常见故障排查和处理的技巧汇总
作为linux运维,多多少少会碰见这样那样的问题或故障,从中总结经验,查找问题,汇总并分析故障的原因,这是一个Linux运维工程师良好的习惯.每一次技术的突破,都经历着苦闷,伴随着快乐,可我们还是执着 ...
- 使用fpm 软件包打包
安装 sudo gem install --no-ri --no-rdoc fpm 简单使用 一个 redis的简单demo % ls src/redis-server redis.conf src/ ...
- UBUNTU中使用pip安装,提示cannt import main问题
在pip==8.1.1版本中,使用pip install Django==1.8.16时,提示 Traceback (most recent call last): File "/usr/ ...
- sourcetree file status checkbox gone (文件状态下的勾选文件 list 消失)
原来是这样的(sourcetree 版本 2.7.1) 不知道触发了什么条件,sourcetree 变成了以下状态(官方解释是拖动面板小于 1 px 后会导致这个问题) 中间的那一列可勾选的已修改的文 ...
- VUE中如何优雅的动态绑定长按事件
答案没有: 图片是从后端传过来, 加到imgTarget属性,实现长按点击删除该图片 let img = document.createElement('img'); img.src = " ...