包含junit单元测试的词条
如何应用Junit单元测试
工具/材料
Eclipse
01
首先我们来新建一个Java项目,如下图所示,选择New下面的Java Project
02
然后在项目下面建一个Package包,如下图所示,Package包主要是为了程序结构明晰
03
在弹出的如下图所示的Package包弹出窗口,我们给包起一个名字,如下图所示
04
然后我们在项目下面新建一个Java的类,如下图所示,类是建在package下面的
05
然后在新建的类中,我们输入如下的方法,主要是加减乘除的功能
06
然后我们右键单击项目,选择Build Path下面的Add Libraries选项,如下图所示
07
在弹出的Add Library界面我们选择Junit,然后一路下一步即可,如下图所示
08
接下来就是新建一个测试类,如下图所示,给测试类起好名字
09
然后书写测试类的代码,如下图所示,利用junit中的assetEquals方法进行加法测试,如下图所示
10
最后我们运行程序,你会看到如下的提示,证明测试通过了
JUnit代码测试是什么?怎么写代码?
分类: 电脑/网络 程序设计 其他编程语言
解析:
JUnit是Java进行单元测试的一个框架, 需要下载junit, 3.8版本和后来的4.0以后版本编写测试的方法略有不同,
在3.8.2中需要导入junit.framework.中的类, 进行测试的类必须继承自TestCase类, 测试方法名称中需要含test字样, 可以在setup和teardown函数中管理一些每个测试函数都需要的资源比如数据库连接等,在测试函数中使用assert开头的函数来进行测试代码开发.以下是从junit文档中摘出的范例:
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
/**
* Some simple tests.
*
*/
public class SimpleTest extends TestCase {
protected int fValue1;
protected int fValue2;
protected void setUp() {
fValue1= 2;
fValue2= 3;
}
public static Test suite() {
/*
* the type safe way
*
TestSuite suite= new TestSuite();
suite.addTest(
new SimpleTest("add") {
protected void runTest() { testAdd(); }
}
);
suite.addTest(
new SimpleTest("testDivideByZero") {
protected void runTest() { testDivideByZero(); }
}
);
return suite;
*/
/*
* the dynamic way
*/
return new TestSuite(SimpleTest.class);
}
public void testAdd() {
double result= fValue1 + fValue2;
// forced failure result == 5
assertTrue(result == 6);
}
public void testDivideByZero() {
int zero= 0;
int result= 8/zero;
result++; // avoid warning for not using result
}
public void testEquals() {
assertEquals(12, 12);
assertEquals(12L, 12L);
assertEquals(new Long(12), new Long(12));
assertEquals("Size", 12, 13);
assertEquals("Capacity", 12.0, 11.99, 0.0);
}
public static void main (String[] args) {
junit.textui.TestRunner.run(suite());
}
}
在4.0.2中的变化是:
测试需要@.junit.Test的Annotation标记,其他部分也使用了Annotation标记,setup和teardown使用@.junit.Before 和@.junit.After, 在eclipse3.1的环境中不支持4.0.2, 可以使用junit 4.0.2中提供的adapter类来帮助eclipse内置的junit发现新版本的测试函数
Junit4入门之如何编写好的测试类
在使用junit前, 我们需要 了解 一些规则,如何去写好一个测试类。
之所以放在junit前说明,是因为单元测试不一定只能用junit去做,就算我们什么软件依赖都不用,也是可以做的,就是会麻烦点,不要下意识的觉得 单元测试=Junit ,应该是 单元测试 Junit 。
市面上单元测试并不是只有junit一家的,还有许多其他的框架模块,只是相比之下它们没有junit普及。而且有些公司还有内部的单元测试框架,也未必是基于junit开发的。
甚至必要的时候,哪怕不用Juint,也要进行单元测试,这就只能用Java原生的断言语句等等了。
1)java中断言(assert)的使用
一开始我以为断言是junit中的特色,其实不然,断言是一个编程术语,常用于单元测试中,甚至它都并不只存在于java。
而 java中的断言 ,是在JDK1.4后开始使用的,关键字是assert,它主要是用在代码 开发和测试时期 ,用于对某些数据进行预期判断,如果结果不符合自己的预期,程序就警告或退出。
它的语法大概如下:
语法①:assert condition
condition代表一个布尔类型的条件表达式,如果为真,就继续正常运行,如果为假,则异常退出
这里我断言x=0,如果计算结果符合我的预期则无事发生,如果计算结果x小于0,则不符合我的预期,断言失败,抛出AssertionError。
语法②:assert condition : message
condition和上面是一样的,冒号后的message通常用于断言失败后的异常提示信息,它就是个传入到AssertionError构造参数里的值,用于我们自定义错误详情的,这里就不放代码了,大家可以自己试试。
关于使用断言还有个最重要的规则: 程序的任何行为都不能依赖断言,千万不要把断言当成程序中的逻辑来使用 ,也就是你的代码即便删除里面所有的断言语句,它的逻辑和之前也是不能有任何变化的。因为它只是用于测试和开发的,甚至JVM默认都是关闭断言使用的,如果没有开启断言,程序会自动忽略所有断言语句,仿佛它们并不存在,要执行assert语句,必须给Java虚拟机传递-enableassertions(可简写为**-ea**)参数 启用断言 ,也可以使用-disenableassertion(简写为**-da) 参数 关闭断言**(默认就是关闭的)。
最后,虽然java有提供断言,但我们实际开发中却很少使用它,因为如果要使用它去测试,还不如直接用Junit框架去写单元测试的代码,Junit也提供了断言的语句。
虽然我们用不上java里的断言,但是也要有所了解,并且大部分的断言其实逻辑都是差不多的。