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. Nginx 负载均衡-加权轮询策略剖析

    本文介绍的是客户端请求在多个后端服务器之间的均衡,注意与客户端请求在多个nginx进程之间的均衡相区别(Nginx根据每个工作进程的当前压力调整它们获取监听套接口的几率,那些当前比较空闲的工作进程有更 ...

  2. ipv6加英文的中括号访问

    加英文的中括号就可以,如[2001:4998:c:e33::1004],我发现这是yahoo首页.但并不是所有IPv6网站都可以通过IPv6地址访问,跟IPv4一样,网站服务器端可以只绑定域名,不接受 ...

  3. HTML学习笔记——各种居中对齐

    0.前言     水平居中基本方法--指定块的宽度并设定块的左右外边距为auto,上下外边距可取0,那么该块能够在父元素中水平居中. 样式例如以下: 1:margin:0px auto 2:margi ...

  4. zoj3640(概率dp)

    题目连接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4808 题意: 一个吸血鬼,每次可以随机的选择n个洞中的任意一个,如果 ...

  5. Windows Phone开发人员必看资料

    win phone开发必看资料,下载地址收藏啦!收藏后可有选择性的下载,希望大家喜欢! 完整附件下载:http://down.51cto.com/data/414417 附件预览: Windows E ...

  6. 王立平--Unity中间GUI Skin

    C#文字: public class NewBehaviourScript2 : MonoBehaviour { public Texture t; public GUISkin skin; // U ...

  7. win7提示“ipconfig不是内部或外部命令”

    进入windows环境变量设置->系统变量,找到path,添加C:\Windows\SysWOW64,或者c:\windows\system32

  8. Flash-使用变形面板制作花朵

    在Flash中利用"变形"面板的"重置选取和变形"button(在变形面板右下角),能够自己主动将对象进行创造性变形地画图 步骤: (1)先导入一幅图像 (2) ...

  9. Microsoft Build 2016

    Microsoft Build 2016 Day 1 记录   去年今日:Microsoft Build 2015 汇总 今年的 Bulid 时间是 3.30-4.1,第一天的主角主要是 Window ...

  10. 动态加载资源文件(ResourceDictionary)

    原文:动态加载资源文件(ResourceDictionary) 在xaml中控件通过绑定静态资源StaticResource来获取样式Style有多种方式: 1.在项目的启动文件App中<App ...