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

  1. package com.junit.MyClass;
  2.  
  3. /**
  4. * Created by lesley on 2017/1/14.
  5. */
  6. public class Calculator {
  7. public int add(int value1, int value2){
  8. return value1 + value2;
  9. }
  10. }

3. 添加Calculator的单元测试类

点击类名,选择 Go to——test

或者直接:Cmd + Shift + T:

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

当测试类生成以后,我们可以为我们的测试方法CalculatorTest添加方法:

  1. package com.junit.MyClass;
  2.  
  3. import org.junit.Before;
  4. import org.junit.Test;
  5.  
  6. import static org.junit.Assert.*;
  7.  
  8. /**
  9. * Created by lesley on 2017/1/14.
  10. */
  11. public class CalculatorTest {
  12. //注意这个不能忘记!!要不然后面无法调用
  13. private Calculator calculator;
  14. @Before
  15. public void setUp() throws Exception {
  16. calculator = new Calculator();
  17. }
  18.  
  19. @Test
  20. public void add() throws Exception {
  21. assertEquals(calculator.add(3, 5),8);
  22. }
  23.  
  24. }

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:

  1. package com.junit.MyClass;
  2.  
  3. /**
  4. * Created by lesley on 2017/1/14.
  5. */
  6. public class User {
  7. public String getName(){
  8. return ("sbw");
  9. }
  10. }

User类对应的UserTest.java:

  1. package com.junit.MyClass;
  2.  
  3. import org.junit.Before;
  4. import org.junit.Test;
  5.  
  6. import static org.junit.Assert.*;
  7.  
  8. /**
  9. * Created by lesley on 2017/1/14.
  10. */
  11. public class UserTest {
  12. private User user;
  13. @Before
  14. public void setUp() throws Exception {
  15. user = new User();
  16.  
  17. }
  18. @Test
  19. public void getName() throws Exception {
  20. assertEquals("sbw", user.getName());
  21.  
  22. }
  23.  
  24. }

如果我们要批量执行这两个类有两种方法:

一、点击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:

  1. package com.junit.MyClass;
  2.  
  3. /**
  4. * Created by lesley on 2017/1/14.
  5. */
  6. import org.junit.runner.*;
  7. import org.junit.runners.Suite;
  8.  
  9. @RunWith(Suite.class)
  10. @Suite.SuiteClasses({
  11. CalculatorTest.class,
  12. UserTest.class
  13. })
  14. public class AllTest {
  15.  
  16. }

这个时候项目的结构如下:

JUnit——(一)使用IDEA进行基本操作的更多相关文章

  1. Batis-iBatis基本操作(增删改查)

    Batis-iBatis基本操作(增删改查) 时间 2014-04-10 17:55:20  CSDN博客 原文  http://blog.csdn.net/mazhaojuan/article/de ...

  2. # java对xml文件的基本操作

    下面是简单的总结三种常用的java对xml文件的操作 1. dom方式对xml进行操作,这种操作原理是将整个xml文档读入内存总,在内存中进行操作,当xml文档非常庞大的时候就会出现内存溢出的异常,这 ...

  3. 基于MyBatis3.0.6的基本操作介绍

    每 一 个 MyBatis 的 应 用 程 序 都 以 一 个 SqlSessionFactory 对 象 的 实 例 为 核 心 .SqlSessionFactory本身是由SqlSessionFa ...

  4. 详解intellij idea搭建SSM框架(spring+maven+mybatis+mysql+junit)(上)

    SSM(Spring+SpringMVC+MyBatis)框架集由Spring.SpringMVC.MyBatis三个开源框架整合而成,常作为数据源较简单的web项目的框架. 其中spring是一个轻 ...

  5. IDEA+JUnit

    1.入门 https://blog.csdn.net/smxjant/article/details/78206279 2.比较好的JUnit例子:https://github.com/aws/aws ...

  6. MyBatis基础:MyBatis数据基本操作(2)

    1. MyBatis映射器 2. MyBatis数据基本操作 示例项目结构: <project xmlns="http://maven.apache.org/POM/4.0.0&quo ...

  7. [SequenceFile_2] SequenceFile 的基本操作

    0. 说明 测试序列文件的读写操作 && 测试序列文件的排序操作 && 测试序列文件的合并操作 && 测试序列文件的压缩方式 && 测试 ...

  8. Hibernate第一天——入门和基本操作

    第一个接触的框架就是这个Hibernate框架了,Hibernate本意是 冬眠 ,这里有必要引用CSDN上某位网友某个帖子的评论先引出框架的概念: 框架:一个软件半成品,帮你做了一些基础工作,你就可 ...

  9. 【Memcached】原理、体系架构、基本操作及路由算法

    1. 什么是Memcached 要了解Memcached首先要到官网上去看官方对它的描述.Memcached的官网网站是:http://memcached.org/,官方对Memcached的描述如下 ...

随机推荐

  1. 理解的javascript自定义事件

    理解的javascript自定义事件 被我拖延了将近一个月的javascript事件模型系列终于迎来了第四篇,也是我计划中的最后一篇,说来太惭愧了,本来计划一到两个星期写完的,谁知中间遇到了很多事情, ...

  2. 业务接口+UI层的设计(基于Castle实现的Repository)

    业务接口+UI层的设计(基于Castle实现的Repository) Repository层设计的文章见:[http://www.cnblogs.com/yomho/p/3297042.html]   ...

  3. ASP.NET MVC3开发-数据库篇之CodeFisrt开发(一)

    本文讲述了在ASP.NET MVC3开发中M层使用Code Fisrt如何进行开发,由于作者对ASP.NET MVC3的学习不是很深,所以写的都是些基本的内容(写的如有不正确的地方请评论指正),适合初 ...

  4. Windows Socket 组件 HP-Socket v2.2.3

    高性能 Windows Socket 组件 HP-Socket v2.2.3 正式发布 HP-Socket 是一套通用的高性能 Windows Socket 组件包,包含服务端组件(IOCP 模型)和 ...

  5. Python:开发Sublime插件,方便PHP开发

    Python:开发Sublime插件,方便PHP开发 背景 最近在学习PHP,开发环境选择了Sublime2,开发过程发现执行PHP程序非常不方便,需要自己在浏览器中输入路径以进行调试,这点不如Dre ...

  6. 异步队列 Deferred

    异步队列 Deferred 背景: 移动web app开发,异步代码是时常的事,比如有常见的异步操作: Ajax(XMLHttpRequest) Image Tag,Script Tag,iframe ...

  7. hdu-4471-Homework-矩阵快速幂+优化加速

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4471 题目意思: 求f(n). 当n为特殊点nk时 解题思路: 当x不为特殊点时,直接用基本的矩阵快 ...

  8. Facebook开源的基于SQL的操作系统检测和监控框架:osquery daemon详解

    osqueryd osqueryd(osquery daemon)是可以定期执行SQL查询和记录系统状态改变的驻守程序. osqueryd能够根据配置手机归档查询结果,并产生日志. 同时也可以使用系统 ...

  9. Web开发必回知识点

    Web前端必须知道 一.常用那几种浏览器测试?有哪些内核(Layout Engine)? 1.浏览器:IE,Chrome,FireFox,Safari,Opera. 2.内核:Trident,Geck ...

  10. selenium自动化过程中遇到的小问题(未完待续)

    1.chrome浏览器调用不起来 代码没出错的情况下,检查下chrome浏览器的版本与chromedriver.exe的版本是否匹配;下面的表格是根据网上及官网整理的chromedriver与chro ...