1.Junit概述:
①Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。
②Junit测试是自动化测试的一种方式,它使得bug容易被控制。
③Junit本质上是一套框架,即开发者制定了一套条条框框,遵循这此条条框框要求编写测试代码,如继承某个类,实现某个接口,可以用Junit进行自动测试了。
④由于Junit相对独立于所编写的代码,可以测试代码的编写可以先于实现代码的编写,XP 中推崇的 test first design的实现有了现成的手段:用Junit写测试代码,写实现代码,运行测试,测试失败(状态条为:红色),修改实现代码,再运行测试,直到测试成功(状态条为:绿色)。以后对代码的修改和优化,运行测试成功,则修改成功。
2.Junit 相关使用
①概念:
|- TestCase(测试用例)--扩展Junit的TestCase类的类。它以testXXX方法的形式包含一个或多个测试。一个testcase把具有公共行为的测试归入一组。
|- TestSuite(测试集合)--组测试。一个test suite是吧多个相关测试归入一组的快捷方式。例如,如果没有为TestCase 定义一个test suite,那么Junit会自动提供一个test suite。包含TestCase中所有测试。
|- TestRunner(测试运行器)--执行test suite的程序。Junit提供了几个test runner,可以用来执行你的测试。 没有TestRunner解开,只有一个所偶test runner都继承的BaseTestRunner. 因此,当我们编写TestRunner的时候,实际上指的是任何继承BaseTestRunner的test runner类。
②Junit成员共同产生测试结果:
TestCase + TestSuite + BaseTestRunner = TestResult
③JUnit基本框架的结构
|- import声明引入必须的JUnit类
|- 定义一个测试类从TestCase继承
|- 必需一个调用super(String)的构造函数
|- 测试类包含一些以test..开头的测试方法
|- 每个方法包含一个或者多个断言语句
当然还有一些其他的内容,但满足以上几条的已经是一个JUnit测试了
④JUnit的命名规则和习惯
|- 如果有一个名为ClassA的被测试函数,那么测试类的名称是TestClassA
|- 如果有一个名为methodA的被测试函数,那么测试函数的名称是testMethodA
⑤介绍Test Case、test suite、Test Runner常规使用: (使用的Eclipse自带的Junit)。
|-Test Case
Java代码 复制代码
import junit.framework.*; //导入junit.jar包
/*TestXxx继承自TestCase(命名规范:一般在类名前加Test)*/
public class TestXxx extends TestCase{
/*测试方法的具体实现(命名规范:以小写的testXxx形式。否则Junt不会自动识别该方法为测试方法)*/
public void testXxx(){};
}
[java] view plaincopy
import junit.framework.*; //导入junit.jar包
/*TestXxx继承自TestCase(命名规范:一般在类名前加Test)*/
public class TestXxx extends TestCase{
/*测试方法的具体实现(命名规范:以小写的testXxx形式。否则Junt不会自动识别该方法为测试方法)*/
public void testXxx(){};
}
|-test suite
Java代码 复制代码
import junit.framework.Test;
public static Test suite(){
TestSuite suite = new TestSuite(); //实例化
suite.addTest(new MoneyTest("testXxx")); //添加测试方法
suite.addTestSuite(TestMoney.class); //添加整个测试到集合中
}
[java] view plaincopy
import junit.framework.Test;
public static Test suite(){
TestSuite suite = new TestSuite(); //实例化
suite.addTest(new MoneyTest("testXxx")); //添加测试方法
suite.addTestSuite(TestMoney.class); //添加整个测试到集合中
}
|- Test Runner (junit.textui.TestRunner)
Java代码 复制代码
public static void main(String args[]){
junit.textui.TestRunner.run(suite()); //将testsuite 执行。
}
[java] view plaincopy
public static void main(String args[]){
junit.textui.TestRunner.run(suite()); //将testsuite 执行。
}