JUnit

測试的重要性毋庸质疑。但怎样使測试更加准确和全面。而且独立于项目之外而且避免硬编码,JUnit给了我们一个非常好的解决方式。

能够说JUnit是为单元測试而生的,一个Java语言的单元測试框架。当然,和JUnit类似的。其它语言的单元測试框架还有:CppUnit、NUnit等,差点儿全部的单元測试工具XUnit都是按照JUnit来写的。

一、JUnit的命名规则和习惯

1、假设有一个名为ClassA的被測试函数,那么測试类的名称就是TestClassA

2、假设有一个名为methodA的被測试函数。那么測试函数的名称就是testMethodA

演示样例

首先如果有一个项目类Classs例如以下:

public class Classs {
Studentstudent=null;
//返回学生集合
publicList<Student> QueryStudent(){
List<Student>lsts=new ArrayList<Student>();
returnlsts;
} publicStudent QueryOne(){
returnstudent;
}
}

当中定义了一个QueryStudent方法返回一个集合;QueryOne的方法返回一个对象。好。如今我们要对方法进行測试。

public final voidtestQueryStudent() {
ClasssmyClass=new Classs();
assertNotNull(myClass.QueryStudent());
} publicfinal void testQueryOne() {
ClasssmyClass=new Classs();
assertNotNull(myClass.QueryOne());
}

这种方法在JUnit框架中称之为一个断言,JUnit提供给我们了非常多断言,比方assertEqual,assertTrue...,我们能够利用这些断言来推断两个值是否相等或者二元条件是否为真等问题。

然后我们能够执行JUnit来检測我们的測试结果,这样我们在不影响Project文件的前提下,实现了对Project单元的測试。

在JUnit框架下,他会自己主动执行全部以test..开头的測试方法(利用java的反射机制),怎样自己定义那些方法执行?一种方法我们能够改变測试方法的名称,不用test开头就可以。这样測试框架就会忽略它。另外一种方法我们能够自己手工组合我们须要的測试集合,我们能够通过创建test
suite来取得,不论什么測试类都可以包括一个名为suite的静态方法:

TestStudent类:

public class TestStudentextends TestCase {

    public TestStudent(String string) {
super(string);
} protectedvoid setUp() throws Exception {
super.setUp();
} publicfinal void testQueryOneClass() {
Studentstudent=new Student();
assertNotNull(student.QueryOneClass());
} publicfinal void testQueryClasss() {
Studentstudent=new Student();
assertNotNull(student.QueryClasss());
} public static Test suite(){
TestSuite suite = new TestSuite();
suite.addTest(newTestStudent("testQueryOneClass"));
return suite;
}
}

我们通过suite显式的说明了我们要执行哪些test方法,并且,通过给构造函数的String參数传值:让TestCase返回一个对命名測试方法的引用。

假设要測试两个类里的測试方法,我们能够再写一个类。写suite方法,选择行測试几个类中的方法。

TestComposite类:

public classTestComposite extends TestCase {

  public TestComposite(String string) {
super(string);
}
static public Test suite(){
TestSuite suite = new TestSuite();
suite.addTestSuite(TestClasss.class);
suite.addTest(TestStudent.suite());
return suite;
}
}

这个类会执行TestStudent类中的suite方法指定执行的測试方法,还会执行TestClasss类中存在的符合命名规范的方法。

总结

JUnit给我们提供了非常多方便的服务,比如:假设測试方法。每个都须要数据库连接。那么我们岂不是要在代码里写非常多遍?不用操心。JUnit给我们提供了能起到总控的方式。我们须要针对suite做一个setUp和tearDown,须要提供所需的一个suite(不管通过什么样的方法)而且把它包装进一个TestSetup对象,和动态代理的思想非常类似。有兴趣的能够自己查一下,实现起来非常easy。

版权声明:本文博主原创文章。博客,未经同意不得转载。

Java基金会——JUnit的更多相关文章

  1. Java 工具 JUnit单元测试

    Java 工具 JUnit单元测试 @author ixenos 1.1.   JUnit单元测试框架的基本使用 一.搭建环境: 导入junit.jar包(junit4) 二.写测试类: 0,一般一个 ...

  2. java自动化-junit框架简述

    本人使用的是java的junit框架来组织的自动化测试,故我这边需要简单介绍一下junit框架 首先,建议自行百度一下junit框架,先有一个大概的了解 所谓的接口自动化测试,会对多个接口中每一个接口 ...

  3. Java单元测试(Junit+Mock+代码覆盖率)---------转

    Java单元测试(Junit+Mock+代码覆盖率) 原文见此处 单元测试是编写测试代码,用来检测特定的.明确的.细颗粒的功能.单元测试并不一定保证程序功能是正确的,更不保证整体业务是准备的. 单元测 ...

  4. vi, Java, Ant, Junit自学报告 - 实训week1

    vi, Java, Ant, Junit自学报告 2017软件工程实训 15331023 陈康怡 vi Vi是linux系统的标准文本编辑器,采用指令的方式进行操作,此处仅记录部分常用的指令. vi模 ...

  5. java单元测试(Junit)

    Eclipse最基本的模块测试 1:首先创建一个java工程,在工程中创建一个被单元测试的Student数据类,如下: package UnitTest; public class Student { ...

  6. Java 单元测试(Junit)

    在有些时候,我们需要对我们自己编写的代码进行单元测试(好处是,减少后期维护的精力和费用),这是一些最基本的模块测试.当然,在进行单元测试的同时也必然得清楚我们测试的代码的内部逻辑实现,这样在测试的时候 ...

  7. JAVA单元测试Junit

    1.为什么要用Junit 做了很多项目,几乎没怎么用过Java的单元测试,是因为它没有用吗?显然不是,是自己的开发方式太不规范!对于大型的软件项目,单元测试不仅有效实用,还非常有必要!它能够测试每个方 ...

  8. java使用Junit工具进行单元测试

    目录 1.类的定义: 2.Junit工具的使用: 3.对该类进行单元测试并查看结果: 4.记录各个阶段的时间 5.将过程记录在个人博客上(github地址) 1.类的定义:类是同一事物的总称,类是封装 ...

  9. Java单元测试(Junit+Mock+代码覆盖率)

    微信公众号[程序员江湖] 作者黄小斜,斜杠青年,某985硕士,阿里 Java 研发工程师,于 2018 年秋招拿到 BAT 头条.网易.滴滴等 8 个大厂 offer,目前致力于分享这几年的学习经验. ...

随机推荐

  1. .idata数据的解析

    每类Section代表不同的数据,不同的数据存储组织方式一定是有非常大区别的.代码段与资源段一定区别巨大,这意味着我需要一个一个的学习每个段的解析. idata段解析 这个段主要存储的是导入符号信息. ...

  2. iOS8:把这些七招APP哭

    6月3日.苹果发布了新一代的高配置手机操作系统iOS 8,我们看到了很多新的功能和引人注目的新变化.它为开发人员提供了许多其他更酷能力发展.第三方输入法也开放,这使得国内的百度.搜狗输入法是不过高兴的 ...

  3. 在后台运行erlang;在需要时连回交互模式

    * 1. 启动后台运行的erlang环境 按以下命令: erl -detached -name a@127.0.0.1 注意,-name的值必须是xxxx@ip的形式.其中xxxx是英文名,ip必须是 ...

  4. Java程序猿学习当中各个阶段的建议

    回答阿里社招面试如何准备,顺便谈谈对于Java程序猿学习当中各个阶段的建议   引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的 ...

  5. 基于FP-Tree的关联规则FP-Growth推荐算法Java实现

    基于FP-Tree的关联规则FP-Growth推荐算法Java实现 package edu.test.ch8; import java.util.ArrayList; import java.util ...

  6. Android笔记之网络-基本了解

    1.3个相关API接口 Android网络编程相关的API接口与相关用途例如以下图 2. 2种网络架构模式 B/S----浏览器/server端模式,通过应用层的HTTP协议通信,不须要特定clien ...

  7. 吐槽CSDN编辑

    Perface 近期喜欢上了markdown.我认为它就是一些HTML标签的快捷键,用一些符号来取代标签,易学易读易用,何乐而不为呢?近期也喜欢用印象笔记来让我的记忆永存,确实它强大的收集能力让我迷上 ...

  8. Linux lamp环境编译安装

    1.安装准备: 1)httpd-2.0.52.tar.gz 2)mysql-4.1.12.tar.gz 3)libxml2-2.6.27.tar 4)freetype-2.1.10.tar 5)gd- ...

  9. 从头来之【图解针对虚拟机iOS开发环境搭建】 (转)

    1.下载Mac OSX10.9. 点击下载 2.下载VMware Workstation 10,点击下载,网页中包含序列号.安装VM. 3.VM10-MacOS补丁.用于创建苹果虚拟机. 安装VM就不 ...

  10. 【Oracle】-【sqlplus / as sysdba登录报错问题】-新用户使用sqlplus / as sysdba登录报错

    刚才打开一个别人的测试库,用root登陆了的,sqlplus / as sysdba竟然报错,奇怪,于是在自己的VM中模拟该过程. 新建了一个test用户: [test@liu bin]# ./sql ...