最近复习java基础以及流行框架,偶然看到教hibernate视频作者使用junit作为hibernate的验证平台,那种感觉让我找到沉寂了好长时间的编程快感,于是顺带着先把jUnit学习了下。
介绍下jUnit,java平台之所以到今天依然如此流行,很大程度上得益于其开源的态度,struts,hibernate,spring,
Apache common library,log4j,jUnit....举不胜举啊,最关键的是这些开源的框架、程序不仅使我们的编程效率大大的提高,更因为他们是编程大师们写的,其稳定性和运行效率也是杠杠滴。junit就是由Erich Gamma 和Kent Beck 两个大师级人物写的,这两个人我想就不用我多说了,Erich Gamma是GoF成员,GoF四个人写的《design patterns》可是很多很多优秀的程序员都要顶礼膜拜的,另一个Kent Beck是极限编程(XP)的发起人,也同样了不得哦。XP的原则之一------测试驱动开发(TDD),所使用的呢就是xUnit了,而jUnit基本就是其中的老大。
好了,现在说下jUnit的使用方法
最好有个eclipse,因为eclipse集成的jUnit用起来非常的舒心
jUnit3.*使用起来相当简单,只需新建一个类继承junit.framework.TestCase即可,TestCase里提供了很多实用的断言方法,测试方法约定以test开头后接要测试的方法,此method无参数无返回值,类名则最好是要测试的类名加Test后缀,比如要测试org.shun.UserManager类下的addUser(User)方法,可以写个UserManagerTest extends TestCase,然后写个测试方法testAddUser()即可
而4.*版本因为利用了J2SE 5.0提供的元数据注释特性,使得测试类可以不用继承TestCase
,只需把@Test加到相应的测试方法即可,因为没有继承TestCase,测试类本身没有了断言方法,怎么办呢?这要利用J2SE的另外一个特性,静态方法导入
可以这样import static org.junit.Assert.*;这样,那些断言方法就可以直接使用了
// jUnit 3.*版本
package org.shun.test;
import org.shun.UserManager;
import junit.framework.TestCase;
public class UserManagerTest extends TestCase {
public void setUp() throws Exception {
// TODO 这里提供供测试方法使用的全局变量初始化
}
public void tearDown() throws Exception {
// TODO 这里提供全局变量的垃圾回收
}
public void testAddUser() {
// TODO
}
}
// jUnit 4.*版本
package org.shun.test;
import org.shun.UserManager;
import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.After;
import org.junit.BeforeClass;
import org.junit.AfterClass;
import org.junit.Test;
public class UserManagerTest extends TestCase {
@Before
public void setUp() throws Exception {
// TODO 全局变量初始化,会为每个测试方法初始化一次
}
@After
public void tearDown() throws Exception {
// TODO 这里提供全局变量的垃圾回收,会为每个测试方法回收一次
}
@BeforeClass
public static void initClass throws Exception {
// TODO 全局变量初始化,只初始化一次
}
@AfterClass
public static void disposeClass throws Exception {
// TODO 全局变量回收,只回收一次
}
@Test
public void testAddUser() {
// TODO 测试方法
}
}
大家不妨想想,如果测试自己写的一个类,怎么测试,写个测试方法,在main方法里初始化,然后运行测试方法或者直接就在main方法里写测试,有的人说这样也挺好呀,方便,还不引入第三方的库增加学习的复杂性,这里就说下junit提供的方便,看到上面代码没,首先人家提供了setup,teardown两个初始化和垃圾回收的方法,然后,里面写的每一个方法,都可以以junit方式运行,反应到eclipse里就是
这是运行测试类,这样里面的所有测试方法都会运行
当然你也可以选中某个测试方法来运行junit test,这样只会运行选中的测试方法,怎么样啊,就这一点使用它就理由充分了吧,最最重要的是人家提供了只有你想不到没有人家做不到的断言方法,哈哈
我这里只是简单介绍了junit的基础,另外像异常测试啦,设置timeout啦,以及派生自junit或者与junit无缝集成的其他工具啦都没有介绍,建议大家下载junit后自己去学习文档,或者来给我要视频教程,我非常乐意
最近学习的感悟就是不管学习什么东西,实践是很重要的,任何东西只有理论基础而没有实践,对个人而言其实就相当于没学,两三天过后就忘干净了,希望我也能多多实践,尽快成为编程高手
分享到:
相关推荐
《JUnit4初体验》 JUnit4是Java编程语言中广泛使用的单元测试框架,它极大地简化了测试代码的编写,使得开发者能够更加专注于功能实现,同时确保代码的质量。本篇文章将带你初探JUnit4的魅力,了解其核心概念和使用...
【标题】:“Easyb初体验” 在IT行业中,我们经常需要进行各种自动化测试,以确保软件的质量和稳定性。Easyb就是这样一款工具,它为Java应用程序提供了简洁、易读的BDD(行为驱动开发)风格的测试框架。这篇博客将...
这篇博客文章“URLClassLoader初体验”可能深入探讨了如何使用`URLClassLoader`来动态加载类和资源,以及它在实际开发中的应用。下面我们将详细探讨`URLClassLoader`的相关知识点。 首先,`URLClassLoader`是Java...
对 Hibernate 初体验 1.新建一个java工程,工程名为Hiberante1 2.导入相应的jar包 1)hibernate需要导入这些包 2)因为我们需要操作数据库所以要导入数据库的包,我用的mysql数据库 3.创建数据库以及表 ...
在"Dagger2 初体验.md"这个文件中,我们可能会找到以下关键概念和步骤: 1. **组件(Component)**:组件是Dagger2的核心,它定义了依赖关系的接口。通过`@Component`注解,我们可以声明所需的模块(Module)以及...
随着业务的发展,系统面临的负载会逐渐增加,因此,设计之初就需要考虑系统的可扩展性,确保在负载增加时,系统能够平滑地扩展资源,保持稳定的服务质量。这涉及到微服务架构、负载均衡、缓存策略等一系列技术的应用...
对于初入编程领域的人士来说,这是一个理想的参考资料,可以从中学习到如何构建一个功能完备的相册管理系统。 【描述】:这个相册系统包含了从数据存储、图像处理到用户交互等多个方面的编程知识。通过分析和理解...
《软件测试宝典》可能涵盖自动化测试工具,如Selenium、Junit、Appium等的使用,以及如何编写测试脚本和实现持续集成。 最后,测试管理与文档也是软件测试中不可或缺的一环。有效的缺陷管理、测试报告编写以及测试...
Ajax(Asynchronous JavaScript and XML)技术的讲解是本书的一个重点,它允许网页实现异步数据交互,不需要刷新整个页面即可更新部分内容,提高了用户体验和Web应用的响应速度。 Struts2框架的介绍则着重于其作为...
在信息技术领域,软件测试是一项至关重要的环节,它确保了产品的质量和用户体验。这个“软件测试教程”旨在为初学者提供一个全面的入门平台,并帮助有经验的测试人员进一步提升技能。本文将深入探讨软件测试的基础...
然而,真正推动Ajax发展的是2000年代初Google Maps的发布,它利用JavaScript与服务器进行异步通信,实现了平滑的滚动和缩放效果,从而展示了Ajax的潜力。 **2. XMLHttpRequest对象** XMLHttpRequest对象是Ajax的...
你可以使用单元测试工具(如JUnit、PyTest)对代码进行模块化测试,同时进行集成测试和性能测试,以确保系统在多用户环境下也能正常运行。 最后,系统的部署和维护也非常重要。你可能需要了解Linux服务器管理、...
达内科技的测试基础笔记为初入行业的测试人员提供了丰富的学习资源,旨在帮助他们掌握基本的测试理论和实践技能。下面我们将深入探讨一些核心的测试知识点。 一、测试目标与原则 1. 测试的目标是为了发现软件中的...
WordPress for Android源码基于Android 4.0(Ice Cream Sandwich)进行开发,这表明项目在设计之初就考虑到了兼容性和性能优化。源码主要分为以下几个关键模块: 1. 数据访问层:这部分代码处理与WordPress REST ...
在“大型企业级项目毕业设计”中,我们可以深入探讨企业级项目开发的多个关键知识点,这些知识对于即将毕业的学生和初入职场的开发者来说极为重要。这个毕业设计项目显然是一个耗时半年的心血结晶,旨在为学习者提供...
架构设计决定了系统的整体结构,界面设计关乎用户体验,而数据库设计则保证数据的有效存储和检索。在这个阶段,程序员可能会使用Word创建概念数据模型和逻辑数据模型。 4. **编码(Coding)** 编码是将设计转化为...