`
61party
  • 浏览: 1047638 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Junit3的测试方法(虽然已经过时,但更容易了解Junit的内部机制)

 
阅读更多
简要说JUnit的4大功能
1. 管理测试用例。修改了哪些代码,这些代码的修改会对哪些部分有影响,通过JUnit将这次的修改做个完整测试。这也就JUnit中所谓的TestSuite
2. 定义测试代码。这也就是JUnit中所谓的TestCase,根据源代码的测试需要定义每个TestCase,并将TestCase添加到相应的TestSuite方便管理。
3. 定义测试环境。在TestCase测试前会先调用“环境”配置,在测试中使用,当然也可以在测试用例中直接定义测试环境。
4. 检测测试结果。对于每种正常、异常情况下的测试,运行结果是什么、结果是否是我们预期的等都需要有个明确的定义,JUnit在这方面提供了强大的功能。

以上部分与我们平常使用IDE调试的过程是完全一样的,只不过是增加了测试用例管理、测试结果检测等功能,提高了单元的效率,保证了单元测试的完整性,明确了单元测试的目标。
一. 测试用例
package can.test;

import java.util.ArrayList;
import java.util.Collection;
import junit.framework.TestCase;

public class SampleTest extends TestCase {

protected void setUp() {
/* 开始test前的准备操作:初始化,获取数据连接... */

}

protected void tearDown() {
/* 完成test后的清理工作:关闭文件, 关闭数据连接... */

}

public void testEmpty() {
/* test case 1*/
Collection collection = new ArrarList();
assertTrue(collection.isEmpty());
}

public void testCase2() {
/* test case 2*/
ArrayList emptyList = new ArrayList();
try {
Object o = emptyList.get(0);
fail("Should raise an IndexOutOfBoundsException");
} catch (IndexOutOfBoundsException expected) {
assertTrue(true);
}
}
}

1.当需要进行test前后操作,则对setUp(), tearDown()这两个方法进行重写。

2.每进行一个test case前后,都会调用setUp(), tearDown()。注意,不是一次调用setUp(), 然后进行多个test case,最后才调用tearDown()。而且选择test case的次序是不确定的。所以调用次序可能是:
1 setUp()
2 testYYY()
3 tearDown()
4 setUp()
5 testXXX()
6 tearDown()
所以每个testcase不要存在数据上的前后联系。
3.编译&运行
compile: javac -cp ../lib/junit.jar can/junit/SampleTest.java
run:(文本界面) java -cp .;../lib/junit.jar junit.textui.TestRunner can.junit.SampleTest
(图形界面) java -cp .;../lib/junit.jar junit.swingui.TestRunner can.junit.SampleTest
如果提示can.junit.SampleTest not found,则注意命令中红色处,.表示把当前目录添加到classpath,便于junit能够在该目录找到can.junit.SampleTest
4. 加上main(可选)
如果你觉得每次都要在命令中指定文本界面或图形界面,有点麻烦,那可以添加一下代码到SampleTest类中:
import junit.framework.Test;
import junit.framework.TestSuite;


public static Test suite() {
/* 添加SampleTest类到TestSuite*/
return new TestSuite(SampleTest.class);
}

public static void main(String args[]) {
/* 指定文本界面*/
junit.textui.TestRunner.run(suite());
}
或者
public static void main(String args[]) {
junit.textui.TestRunner.run(SampleTest.class);
}
这样run: java -cp .;../lib/junit.jar can.junit. SampleTest
二. 测试单元
当需要对多个类或者模块进行unit test的时候,我们都会写好每个类的testcase,然后写一个Suite来将它们串联起来。
package can.junit;

import junit.framework.Test;
import junit.framework.TestSuite;

public class SampleTestSuite {

public static Test suite() {
TestSuite suite = new TestSuite("Sample Tests");

/* 逐一添加testCase类 */
suite.addTestSuite(SampleTest.class);

/* 逐一添加test suite(注意,这是递归调用的) */
suite.addTest(AnotherTestSuite.suite());

return suite;
}

public static void main(String args[]) {
junit.textui.TestRunner.run(suite());
}
}
刚才说了,每进行一个test case,setUp()和tearDown()都会调用。而有的时候,在setUp()中相当耗费资源,我们想进行所有的test case仅调用一次setUp()和tearDown(),这样需要把TestSuite包装到TestSetup类中:
import junit.framework.*;
import junit.extensions.TestSetup;

public class AllTestsOneTimeSetup {

public static Test suite() {

TestSuite suite = new TestSuite();
suite.addTest(SomeTest.suite());
suite.addTest(AnotherTest.suite());

TestSetup wrapper = new TestSetup(suite) {
protected void setUp() {
oneTimeSetUp();
}

protected void tearDown() {
oneTimeTearDown();
}
};
return wrapper;
}

public static void oneTimeSetUp() {
// one-time initialization code
}

public static void oneTimeTearDown() {
// one-time cleanup code
}
}
三. 其他
对于protected方法的test,可以把test case放在被test的类同一目录
分享到:
评论

相关推荐

    Junit单元测试内部机制解析

    Junit java单元测试内部机制解析

    Junit测试Void方法

    因此我们要使用junit测试void方法,必须找到一个有实际返回值的方法来暂时替代void方法,但此方法只作为被测void方法的入口和出口,测试程序所调用的仍旧是原void方法。为了实现这种测试方式,我们按照如下步骤进行...

    用JUnit测试void方法

    Junit 通常用于那些有明确返回值的方法的测试...因此我们要使用junit测试void方法,必须找到一个有实际返回值的 方法来暂时替代void方法,但此方法只作为被测void方法的入口和出口,测试程序所调用的仍旧是原void方法。

    Junit单元测试文档

    junit3 junit4 api,单元测试的利器

    junit测试测试代码

    junit测试测试junit测试测试junit测试测试junit测试测试

    Junit单元测试Junit单元测试Junit单元测试Junit单元测试

    Junit单元测试Junit单元测试Junit单元测试Junit单元测试

    Mockito+Junit5测试方法实践

    内容概要:参考Mockito官方API文档,实践框架每个特性。 适合人群:Mockito入门人员以及想全面...能学到什么:“Mockito 4.6.0 + Junit 5”的组合编程。 使用建议:使用前安装好Maven及Java即可,推荐使用VSCode编辑。

    Junit单元测试Junit单元测试Junit单元测试

    Junit单元测试Junit单元测试Junit单元测试Junit单元测试

    Junit单元测试的实验报告.docx

    简单介绍了Junit的安装过程与实例应用。应用的问题是软件测试中的佣兵问题,整个文档中有代码及测试结果,可以更好地帮助学生了解Junit单元测试中的作用。

    Junit单元测试所需要的两个jar包

    3 Junit单元测试框架的作用以及好处. 用来对类中的方法功能进行有目的的测试,以保证程序的正确性和稳定性。 能够让方法独立运行起来。 好处: 可以书写一系列的测试方法,对项目所有的接口或者方法进行单元测试。 ...

    Junit单元测试指南

    Junit单元测试指南 Junit单元测试指南 Junit单元测试指南 Junit单元测试指南 Junit单元测试指南 Junit单元测试指南

    junit测试_java_JUnit_JUnit测试_

    junit测试 test txt file

    Junit 计算器测试

    算了免费,面向初学者,了解Junit测试机制和样例以后会慢慢上传更有用的代码

    junit单元测试使用方法(实例)

    应用JUnit实施单元测试 JUnit的框架原理分析 JUnit主要用于单元测试,所谓的单元测试就是常常说的白盒测试

    Junit4单元测试源码

    多数Java的开发环境都已经集成了JUnit作为单元测试的工具。 [1] JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework)。Junit测试是程序员测试,即所谓白盒测试,因为...

    Junit 单元测试完整案例

    Junit 单元测试 包括Spring Struts 两个模块的测试案例。附源码

    软件测试中Junit单元测试实例

    上下文时间软件测试中Junit单元测试实例在一种传统的结构化编程语言中,比如C,要进行测试的单元一般是函数或子过程。在象C++这样的面向对象的语言中,要进行测试的基本单元是类。对Ada语言来说,开发人员可以选择是...

    Junit测试案例使用

    Junit,测试Junit,测试案例使用

    自动饮料机Junit测试(软件测试与质量保证实验).rar

    通过单元测试工具(Junit)支持,使学生对单元测试中测试用例的设计原则,设计方法进行了解和掌握。

    junit4测试jar包

    这是一个junit4测试的jar包,copy进去就可用

Global site tag (gtag.js) - Google Analytics