-- 快速起步
JUnit是个好东西,做大点的项目离不开这东西,实际中用的时候也因为时间和人力的关系,仅仅写个TestCase(测试单元),运行一下看看就扔过去了,过后也不维护测试代码。
所用的JUnit包为3.8.2。
JUnit这东西,说复杂也复杂,说简单也简单,关于JUnit的叙述解说网上一堆一堆,可是就找不到个简单点又能说明问题的附带有完整代码可运行的例子。下面给出一个三分钟的入门的例子大家看看。
一、写测试目标(业务相关的类)
/**
*
* 测试对象
* User: leizhimin
* Date: 2008-3-13 14:58:58
*/
public class Calcuator {
public double add( double n1, double n2) {
return n1 + n1;
}
}
*
* 测试对象
* User: leizhimin
* Date: 2008-3-13 14:58:58
*/
public class Calcuator {
public double add( double n1, double n2) {
return n1 + n1;
}
}
二、写测试用例
import
junit.framework.TestCase;
/**
* 测试用例
* File: TestCalcuator.java
* User: leizhimin
* Date: 2008-3-13 15:00:17
*/
public class TestCalcuator extends TestCase {
public void testAdd(){
Calcuator calcuator= new Calcuator();
double result=calcuator.add(1,2);
assertEquals(3,result,0);
}
}
/**
* 测试用例
* File: TestCalcuator.java
* User: leizhimin
* Date: 2008-3-13 15:00:17
*/
public class TestCalcuator extends TestCase {
public void testAdd(){
Calcuator calcuator= new Calcuator();
double result=calcuator.add(1,2);
assertEquals(3,result,0);
}
}
import
junit.framework.TestCase;
/**
* 测试用例
* File: TestCalcuator2.java
* User: leizhimin
* Date: 2008-3-13 16:13:29
*/
public class TestCalcuator2 extends TestCase {
public void testAdd(){
Calcuator calcuator= new Calcuator();
double result=calcuator.add(1,2);
assertEquals(3,result,0);
}
}
/**
* 测试用例
* File: TestCalcuator2.java
* User: leizhimin
* Date: 2008-3-13 16:13:29
*/
public class TestCalcuator2 extends TestCase {
public void testAdd(){
Calcuator calcuator= new Calcuator();
double result=calcuator.add(1,2);
assertEquals(3,result,0);
}
}
三、写测试单元
import
junit.framework.TestSuite;
import junit.framework.Test;
import junit.textui.TestRunner;
/**
* 测试单元
* File: TestAll.java
* User: leizhimin
* Date: 2008-3-13 16:17:10
*/
public class TestAll extends TestSuite {
public static Test suite() {
TestSuite suite = new TestSuite( "TestSuite Test");
suite.addTestSuite(TestCalcuator. class);
suite.addTestSuite(TestCalcuator2. class);
return suite;
}
public static void main(String args[]){
TestRunner.run(suite());
}
}
import junit.framework.Test;
import junit.textui.TestRunner;
/**
* 测试单元
* File: TestAll.java
* User: leizhimin
* Date: 2008-3-13 16:17:10
*/
public class TestAll extends TestSuite {
public static Test suite() {
TestSuite suite = new TestSuite( "TestSuite Test");
suite.addTestSuite(TestCalcuator. class);
suite.addTestSuite(TestCalcuator2. class);
return suite;
}
public static void main(String args[]){
TestRunner.run(suite());
}
}
四、运行单元测试的main()方法
控制台打印出结果如下:
..
Time: 0
OK (2 tests)
Process finished with exit code 0
Time: 0
OK (2 tests)
Process finished with exit code 0
运行图形界面显示结果:
这个例子100%可以运行。呵呵,看到了吧。
这个仅仅是个起步例子,在实际中还应该注意测试数据的预备,测试结束后要恢复测试环境的状态,
-- 实际应用
接上文“
JUnit三分钟教程 ---- 快速起步”,续写一篇,以便能真正将JUnit用到项目的测试中。
进行测试确不清理垃圾数据就像随地大小便一样让人无法忍受!
测试是应该进行,如果测试过程中给数据库中写入了垃圾数据怎么办,不用担心,JUnit的设计者早已考虑到了这个问题,下面看如何控制“测试垃圾”的回收。
结合Eclipse,这个实现非常的简单,80%的代码是Eclipse生成的,呵呵。
一、测试目标
public
class
Calc {
private int a,b;
public Calc() {
}
public int add() {
return a + b;
}
public int getA() {
return a;
}
public void setA( int a) {
this.a = a;
}
public int getB() {
return b;
}
public void setB( int b) {
this.b = b;
}
}
private int a,b;
public Calc() {
}
public int add() {
return a + b;
}
public int getA() {
return a;
}
public void setA( int a) {
this.a = a;
}
public int getB() {
return b;
}
public void setB( int b) {
this.b = b;
}
}
二、写测试用例
测试用例中的setup()方法会在测试逻辑最先调用。就相当于做初始化工作。
测试用例中的tearDown() 方法在测试逻辑之后调用。充当一个清理战场的角色,以清楚测试过程中对现场的状态的破坏。
import
junit.framework.TestCase;
public class CalcTest1 extends TestCase {
Calc c= new Calc();
protected void setUp() throws Exception {
c.setA(2);
c.setB(1);
}
protected void tearDown() throws Exception {
c= null;
}
public void testAdd() {
int result=c.add();
assertEquals(3,result,0);
// fail("尚未实现"); // TODO
}
}
public class CalcTest1 extends TestCase {
Calc c= new Calc();
protected void setUp() throws Exception {
c.setA(2);
c.setB(1);
}
protected void tearDown() throws Exception {
c= null;
}
public void testAdd() {
int result=c.add();
assertEquals(3,result,0);
// fail("尚未实现"); // TODO
}
}
import
junit.framework.TestCase;
public class CalcTest2 extends TestCase {
Calc c= new Calc();
protected void setUp() throws Exception {
c.setA(2);
c.setB(1);
}
protected void tearDown() throws Exception {
c= null;
}
public void testAdd() {
int result=c.add();
assertEquals(3,result,0);
// fail("尚未实现"); // TODO
}
}
public class CalcTest2 extends TestCase {
Calc c= new Calc();
protected void setUp() throws Exception {
c.setA(2);
c.setB(1);
}
protected void tearDown() throws Exception {
c= null;
}
public void testAdd() {
int result=c.add();
assertEquals(3,result,0);
// fail("尚未实现"); // TODO
}
}
本例中没有测试垃圾,因此tearDown() 实际上可以不用写。
三、生成测试单元
import
junit.framework.Test;
import junit.framework.TestSuite;
public class AllTests {
public static Test suite() {
TestSuite suite = new TestSuite( "Test for default package");
//$JUnit-BEGIN$
suite.addTestSuite(CalcTest1. class);
suite.addTestSuite(CalcTest2. class);
//$JUnit-END$
return suite;
}
}
import junit.framework.TestSuite;
public class AllTests {
public static Test suite() {
TestSuite suite = new TestSuite( "Test for default package");
//$JUnit-BEGIN$
suite.addTestSuite(CalcTest1. class);
suite.addTestSuite(CalcTest2. class);
//$JUnit-END$
return suite;
}
}
四、在Eclipse中执行单元测试
~~~周末愉快!!
本文出自 “熔 岩” 博客,转载请与作者联系!
113

被折叠的 条评论
为什么被折叠?



