黑马程序员----JAVA基础之junit测试框架

本文介绍了JUnit测试框架的基本概念、用途及使用方法,并提供了多个示例,包括如何进行基本的单元测试、设置测试前后置条件以及如何使用断言验证方法结果。


------ android培训java培训、期待与您交流! ----------


junit测试框架


一、junit测试框架简述

JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework)。Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。

二、junit测试框架的用途

可以让我们在编写代码的过程中,可以不断进行测试,而不需要主方法,且可以在方法测试前后都加上要执行的方法,也可以在这个类测试前后都加上要执行的代码,用于启动一些测试方法前都需要的条件,及放于测试后常用于释放资源.

并且,可以断言测试,也就是测试一个方法是否可以得到你想要的返回值.

三、junit测试框架的使用

1.测试一个方法是否正常

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;//导入Junit包
public class Test15 {
@Test//加注解,表示把程序交给Junit运行.
public  void print() {
char c =(char)65;
System.out.println(c);
}
}


2.在每个方法测试前后都运行自定义方法.

char c;
@Before//方法运行前先执行的方法
public void before(){
 c =(char)65;
} @Test//加注解,表示把程序交给Junit运行.
public  void print() {
System.out.println(c);
}
@After//方法运行后
void after(){
System.out.println("after");
}


3.在类加载前后运行,注意:都要是static

static char c;
@BeforeClass //只类加载前运行一次
public static void before(){
 c =(char)65;
}
@Test//加注解,表示把程序交给Junit运行.
public  void print() {
System.out.println(c);
}
@AfterClass//类加载后运行一次
public static void after(){
System.out.println("after");
}


4.断言判断某个方法的结果是不是你想要的,第一个参数表示你期望的结果.有好多方法,例:

@Test
public  void test() {
Print p = new Print();
//断言 判断某个方法的结果是不是你想要的,第一个参数表示你期望的结果.有好多方法,这例如
Assert.assertEquals("a", p.print());
}
}
class Print{
public String print(){
return "a";
}
}
测试方法运行的时间
@Test(timeout=200)
public void testFindUser() {
//以下进行多次断言,判断各种情况下是否准确
User user=dao.findUser("张三", "123");
assertNotNull(user);
user=dao.findUser("张三", "22");
assertNull(user);
user=dao.findUser("22", "123");
assertNull(user);
user=dao.findUser("22", "13");
assertNull(user);
}


四、junit测试框架何时使用

在编写程序的时候,我们为了减少发后的维护压力,让代码边编写边测试.

五、junit测试框架的特点

(1) 不要用TestCase的构造函数初始化Fixture,而要用setUp()和tearDown()方法。   

(2)不要依赖或假定测试运行的顺序,因为JUnit利用Vector保存测试方法。

  所以不同的平台会按不同的顺序从Vector中取出测试方法。   

(3)避免编写有副作用的TestCase。例如:如果随后的测试依赖于某些特定的交易数据,就不要提交交易数据。

  简单的回滚就可以了。   

(4) 当继承一个测试类时,记得调用父类的setUp()和tearDown()方法。   

(5)将测试代码和工作代码放在一起,一边同步编译和更新。(使用Ant中有支持junit的task.) 

(6)测试类和测试方法应该有一致的命名方案。如在工作类名前加上test从而形成测试类名。  

(7)确保测试与时间无关,不要依赖使用过期的数据进行测试。导致在随后的维护过程中很难重现测试。   

(8)如果你编写的软件面向国际市场,编写测试时要考虑国际化的因素。不要仅用母语的Locale进行测试。   

(9)尽可能地利用JUnit提供地assert/fail方法以及异常处理的方法,可以使代码更为简洁。  

(10)测试要尽可能地小,执行速度快。   

(11)不要硬性规定数据文件的路径。   

(12)利用Junit 的自动异常处理书写简洁的测试代码 事实上在Junit 中使用try-catch 来捕获异常是没有必要的,Junit 会自动捕获异     常。那些没有被捕获的异常就被当成错误处理。   

(13)充分利用Junit 的assert/fail 方法.assertSame()用来测试两个引用是否指向同一个对象.assertEquals()用来测试两个对象是否相等 

(14). 确保测试代码与时间无关 



------ android培训java培训、期待与您交流! ----------


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值