JUnit——(一)使用IDEA进行基本操作
JUnit是一个回归测试框架(regression testing framework)。Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。
1. 创建项目

其中:
1)com.junit.MyClass用于存放类
2)为了不将测试添加到源中,创建与src平级的目录:tests,存放测试类。这样测试将从产品代码中分离出来。然后Mark Director As:Test Source Root

2. 在com.junit.MyClass中添加新的类用于测试:
Calculator.java
package com.junit.MyClass; /**
* Created by lesley on 2017/1/14.
*/
public class Calculator {
public int add(int value1, int value2){
return value1 + value2;
}
}
3. 添加Calculator的单元测试类
点击类名,选择 Go to——test
或者直接:Cmd + Shift + T:

选择JUnit4作为单元测试库。IDEA将这个库添加到模块中。选择生成add()方法

当测试类生成以后,我们可以为我们的测试方法CalculatorTest添加方法:
package com.junit.MyClass; import org.junit.Before;
import org.junit.Test; import static org.junit.Assert.*; /**
* Created by lesley on 2017/1/14.
*/
public class CalculatorTest {
//注意这个不能忘记!!要不然后面无法调用
private Calculator calculator;
@Before
public void setUp() throws Exception {
calculator = new Calculator();
} @Test
public void add() throws Exception {
assertEquals(calculator.add(3, 5),8);
} }
4. 运行测试
点击 Run CalculatorTest

结果显示如下:

5. 编辑测试设置
我们可以通过Run ——Edit Configuration或工具栏上的标签来调整我们测试运行配置:

在Configuration选项卡,用户可以选择需要运行的测试。例如,您可以从一个类、程序包、测试套件或甚至模式中运行所有的测试。这里的Fork模式让用户在一个单独的进程运行每个测试。

代码覆盖测试:
1)默认情况下使用自己的测试引擎
2)覆盖率模式:Tracing会增加消耗,但是测试会更准确

6. 运行覆盖
收集覆盖率,用户需要通过Run → Run 'MyClassTest' with Coverage或工具栏上的选项运行特定模式的测试。

当覆盖模式运行至少一个测试之后,IDE将会在Project工具窗口显示每个程序包、类的覆盖率数据,同时在Coverage工具窗和编辑器中也会显示。

如果用户添加另一个方法到MyClass,并运行覆盖率测MyClass,就会发现,没有被测试覆盖到的代码都将高亮显示为红色。覆盖的代码颜色则是绿色。如果一些代码是只覆盖部分,那没将显示为黄色。
7. 批量操作
我们写两个测试类:一个是刚刚写的Calculator.java,还有一个为User.java:
package com.junit.MyClass; /**
* Created by lesley on 2017/1/14.
*/
public class User {
public String getName(){
return ("sbw");
}
}
User类对应的UserTest.java:
package com.junit.MyClass; import org.junit.Before;
import org.junit.Test; import static org.junit.Assert.*; /**
* Created by lesley on 2017/1/14.
*/
public class UserTest {
private User user;
@Before
public void setUp() throws Exception {
user = new User(); }
@Test
public void getName() throws Exception {
assertEquals("sbw", user.getName()); } }
如果我们要批量执行这两个类有两种方法:
一、点击tests下面这个测试包“com.junit.MyClass”,选“Run Tests in com.junit.MyClass”就可以执行这个包下所有的测试:

二、引入“测试套件”
如果我们只是选择性的执行一些测试类,则我们可以利用“测试套件”——Suite(or test suite)。
编写测试套件的原则:
1. 创建一个空类作为测试套件的入口;
2. 使用注解 org.junit.runner.RunWith 和 org.junit.runners.Suite.SuitClasses 修饰这个空类
3. 将org.junit.runners.Suite作为参数传入给注解RunWith,以提示Junit为此类测试使用套件运行器执行。
4. 将需要放入此测试套件的测试类组成数组作为注解SuiteClasses的参数
5. 保证这个空类使用public修饰,而且存在公开的不带任何参数的构造函数
AllTest.java:
package com.junit.MyClass; /**
* Created by lesley on 2017/1/14.
*/
import org.junit.runner.*;
import org.junit.runners.Suite; @RunWith(Suite.class)
@Suite.SuiteClasses({
CalculatorTest.class,
UserTest.class
})
public class AllTest { }
这个时候项目的结构如下:

JUnit——(一)使用IDEA进行基本操作的更多相关文章
- Batis-iBatis基本操作(增删改查)
Batis-iBatis基本操作(增删改查) 时间 2014-04-10 17:55:20 CSDN博客 原文 http://blog.csdn.net/mazhaojuan/article/de ...
- # java对xml文件的基本操作
下面是简单的总结三种常用的java对xml文件的操作 1. dom方式对xml进行操作,这种操作原理是将整个xml文档读入内存总,在内存中进行操作,当xml文档非常庞大的时候就会出现内存溢出的异常,这 ...
- 基于MyBatis3.0.6的基本操作介绍
每 一 个 MyBatis 的 应 用 程 序 都 以 一 个 SqlSessionFactory 对 象 的 实 例 为 核 心 .SqlSessionFactory本身是由SqlSessionFa ...
- 详解intellij idea搭建SSM框架(spring+maven+mybatis+mysql+junit)(上)
SSM(Spring+SpringMVC+MyBatis)框架集由Spring.SpringMVC.MyBatis三个开源框架整合而成,常作为数据源较简单的web项目的框架. 其中spring是一个轻 ...
- IDEA+JUnit
1.入门 https://blog.csdn.net/smxjant/article/details/78206279 2.比较好的JUnit例子:https://github.com/aws/aws ...
- MyBatis基础:MyBatis数据基本操作(2)
1. MyBatis映射器 2. MyBatis数据基本操作 示例项目结构: <project xmlns="http://maven.apache.org/POM/4.0.0&quo ...
- [SequenceFile_2] SequenceFile 的基本操作
0. 说明 测试序列文件的读写操作 && 测试序列文件的排序操作 && 测试序列文件的合并操作 && 测试序列文件的压缩方式 && 测试 ...
- Hibernate第一天——入门和基本操作
第一个接触的框架就是这个Hibernate框架了,Hibernate本意是 冬眠 ,这里有必要引用CSDN上某位网友某个帖子的评论先引出框架的概念: 框架:一个软件半成品,帮你做了一些基础工作,你就可 ...
- 【Memcached】原理、体系架构、基本操作及路由算法
1. 什么是Memcached 要了解Memcached首先要到官网上去看官方对它的描述.Memcached的官网网站是:http://memcached.org/,官方对Memcached的描述如下 ...
随机推荐
- SQLSERVER利用FOR XML PATH实现分组拼接字符串
首先看一下数据结构表 IF(OBJECT_ID('tempdb..#tProduct')IS NOT NULL) DROP TABLE #tProduct SELECT * INTO #tProduc ...
- vim复制
关于vim复制剪贴粘贴命令的总结 最近在使用vim,感觉很好很强大,但是在使用复制剪切粘贴命令是,碰到了一些小困惑,网上找了一些资料感觉很不全,讲的也不好,遂自己进行实践并总结了. 首先是剪切(删 ...
- Asycn/Await 异步编程初窥(二)
经过总过4天的学习和实践,做完了 WinForm 下 .Net 4.5 的基本异步应用,实现了一个 Http 协议下载的测试程序,为以后使用 .Net 4.5 积累知识和经验.这个小程序完成这样几个作 ...
- 1047找环环&1503整数探究
1047就是判断一个数乘以他的位数1~n后是这个数转来转去的一个形式.主要就是大整数乘法 贴shi代码 #include<iostream> #include<string> ...
- Unity3d物体模型(实现旋转缩放平移自动旋转)
基本功能实现:物体通过鼠标左键上下移动,中间键缩放.右键旋转,30秒没操作,物体自动旋转 实例代码: using UnityEngine; using System.Collections; publ ...
- 简单的mvc之二:蜿蜒的管线
关于系列的第二篇,在管线与路由之间犹豫了很久,最终选择了管线—为免于盲人摸象的困惑. 管线的位置在哪里呢?webform,mvc以及web api都架构于asp.net平台上,管线则是asp.net的 ...
- Oracle和Mysql分别生成sequence序列
有时候在往数据库中插入数据的时候,如果ID值是32位的UUID, 而自己随便写个字符又不合适,这时就要用到函数来产生一个序列值 Oracle: select sys_guid() from dual; ...
- poj1269
基础题,直线间关系 #include <iostream> #include <math.h> #include <iomanip> #define eps 1e- ...
- Android Widget(窗口小部件)
Android Widget简介 应用程序窗口小部件(Widget)是微型的应用程序视图,它可以被嵌入到其它应用程序中(比如桌面)并接收周期性的更新.你可以通过一个App Widget Provide ...
- visio UML用例里面找不到include关系
今天用Microsoft Visio 2007画用例图时,发现visio UML用例里面找不到include关系,查到一个可行的解决办法: 1)创建一个UML用例图模板:打开Microsoft Vi ...