您的位置:首页 > 产品设计 > UI/UE

Juit3原理分析一(测试入门)

2016-01-27 15:44 681 查看

(一) Junit简介

  JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架。Juint测试是白盒测试,在知道程序完成什么功能和如何完成的基础上进行的测试。



(二) 一个简单的测试用例

下面我们将会通过一个简单测试实例来展示JUnit的最基本用法,在如下测试用例中我们仅仅测试1=1是否成立。
public class JunitTest extends TestCase {

protected void setUp() throws Exception {
super.setUp();
System.out.println("setup of test1");
}

protected void tearDown() throws Exception {
super.tearDown();
System.out.println("teardown of test1");
}

public void  testTest() {
assertEquals(1, 1);
System.out.println("test1");
}

}


如上就是一个简单的测试用例,可以在eclipse中右键作为Junit TestCase运行并可以通过Junit查看测试结果。在本例中运行结果明显是测试通过,在eclipse中的JUnit插件显示绿色通过。
一个符合JUnit3框架规则的测试用例要求如下:

测试类需要继承junit.framework.TestCase
测试方法需要为public void testXXX类型且无参数,注意一定是要public类型返回值为void名字为testXXX,其中XXX可以是自己测试的方法名称。比如测试getId方法可以写作public void testGetId()

通过assertEquals等方法判定测试结果是否符合预期以此判定测试通过还是失败,如果测试代码有问题则测试结果为Error

(可选)通过重写父类的setUp方法和tearDown方法来做测试用例的预处理和后处理。注意这两个方法会在每一个测试方法运行之前和运行之后执行。比如上述例子打印结果为:setup  test   teardown
 

(三)Junit3框架中的关键组件及其关系

在上一节我们通过最简单的测试用例实例了解了JUnit的工作流程,现在我们会通过分解JUnit3中的一些关键组件及其用法来学习JUnit3的更多用法。

JUnit3中部分关键组件如下:
1,TestCase测试用例,是我们实现测试用例的父类,有测试环境初始化方法setUp()和收尾方法tearDown()通过调用这两个方法可以很方便的进行资源的申请和释放。
       2,TestSuite测试套件,通过addTestSuite方法添加Test类型实例(包括TestCase和TestSuite实例),组成测试树。测试套件用于管理大量的测试用例,使用TestSuite将测试用例组织成测试树可以很方便的进行模块测试和全部测试,同时可以将不同的测试树节点(TestSuite)组装成新的测试树来做更方便的测试管理。
       3,TestRunner 用例运行器,通过解析传入参数配置运行环境,完成初始化工作。同时接收参数TestSuite或者TestCase来执行测试用例或测试套件的测试任务。返回TestResult作为测试结果。
       4,TestResult用于保存测试结果。同时TestResult保存了测试监听器的列表和一些状态控制变量。在每一个测试用例的测试结果被加入到TestResult中的时候,TestResult都会逐一通知监听器该条测试的测试结果,让监听器可以针对测试结果执行自己的逻辑。同时我们也可以自己定义监听器加入到TestResult中来监听测试结果。
下面我们展示一个测试套件的使用:
假定有上文中testcase两个分别为JunitTest和JunitTest1,并且分别打印log到控制台,setup of,teardown of 以及 test然后我们定义测试组件如下
public class TestAll {

public static void main(String[] args) {
// TODO Auto-generated method stub
TestResult result = TestRunner.run(suite());
}
public static Test suite() {
TestSuite suite = new TestSuite();
suite.addTestSuite(JunitTest.class);
suite.addTestSuite(JunitTest2.class);
return suite;
}

}

通过TestSuite添加两个测试case进去并执行TestSuite的内容来实现同时运行两个选定的case,TestSuite.addTestSuite()方法也可以接受TestSuite类型的参数保证了新树可以直接添加已有的树作为节点,方便扩展。同时result可以保存测试结果作为后续处理。(一般来说框架会为我们添加一些默认监听器处理测试结果,比如打印到控制台)
运行结果:
setup of test1
test1
teardown of test2
setup of test2
test2
teardown of test2


所以一个testcase的运行流程如下:



TestCase被加入到TestSuite做成测试树,测试树被传入TestRunner运行器中遍历执行然后保存结果到TestResult,一个测试用例就此完结。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  junit 测试