测试分类白箱测试黑箱测试单元测试集成测试功能测试……白箱测试是指在知道被测试的软件如何(How)完成功能和完成什么样(What)的功能的条件下所作的测试一般是由开发人员完成单元测试是一种白箱测试因为开发人员最了解自己编写的软件JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架回归测试就是你不断地对所编写的代码进行测试(如单元测试)编写一些测试一些调试一些然后循环这一过程你会不断地重复先前的测试哪怕你正编写其他的类
第一步
去Junit主页()下载最新版本程序包junitzip解开压缩包到c\junit(可自定义)
第二步
假如目录是c\junit那么在classpath中加入c\junit\c\junit\junitjar定义类路径在命令提示符下运行java junitswinguiTestRunner如果一切正确就会打开应用程序在下拉菜单中寻找程序自带的例子比如junitsamplesAllTests点击Run观察结果
第三步
实现自己的TEST计划目前有一个叫MyBean的数据库操作类需要测试如下
package junitsamples;
import javasql*;
import javaio*;
public class MyBean{
Statement stmt=null;
ResultSet rs=null;
Connection conn=null;
String result=null;
public String con(){ //初始化数据库
try{
ClassforName(orggjtmmmysqlDriver)newInstance();
String url =jdbc:mysql:///weboa?user=root&password=;
conn= DriverManagergetConnection(url);
return Connection Success!;
}
catch(Exception e){
Systemoutprintln(e);
return Connection Error!;
}
}
public String gogo(String lmdm){ //查询数据库
try{
stmt=conncreateStatement();
String sql=select * from TB_LM where N_LMDM=+lmdm+;
rs=stmtexecuteQuery(sql); //执行查询
while (rsnext()){
result=rsgetString(N_SJID);
}
}
catch(Exception e){
result=etoString();
}
finally { //关闭JDBC资源
if(rs != null) try { rsclose(); } catch(SQLException ex)
{ exprintStackTrace(); }
if(conn != null) try { connclose(); } catch(SQLException ex)
{ exprintStackTrace(); }
}
return result;
}
}
接着创建一个测试类TestMyBean如下
package junitsamples;
import junitsamplesMyBean;
import junitframework*;
public class TestMyBean extends TestCase { //TestCase的子类
private MyBean aName; //构造被测类的对象
public TestMyBean(String name) {
super(name);
}
protected void setUp() { //进行初始化的任务
aName= new MyBean();
}
public static Test suite() { //进行测试
return new TestSuite(TestMyBeanclass);
}
public void testCon() { //对预期的值和con方法比较
AssertassertTrue(!aNameequals(null)); //断言
AssertassertEquals(Connection Success!n());
}
public void testGogo() { //对预期的值和gogo方法比较
n();
AssertassertTrue(!aNameequals(null)); //断言
AssertassertEquals(aNamegogo());
}
}
解释如下
首先要引入待测试的类import junitsamplesMyBean接着引入Junit框架import junitframework*与一个Servlet类似需要继承父类TestCase在setUp()方法中实例化一个MyBean供后面的测试方法使用suite()是一个很特殊的静态方法它会使用反射动态的创建一个包含所有的testXxxx方法的测试套件确定有多少个测试可以执行testCon()方法对MyBean的Con方法进行测试并断言(Assert)结果是Connection Success!并在AssertassertEquals()方法中验证testGogo()方法和testCon()方法类似
第四步
把TestMyBeanMyBean类编译成*class文件在Junit的控制台上选择刚才定义的TestMyBean类并运行如果一切正确就会显示绿条证明测试正确如果显示红色在Results中会有相应显示根据提示检查MyBean类中的错误一般的只要断言符合MyBean类的规范TestMyBean类几乎不可能出错
一些扩展
对于WEB应用程序我们可以把Junit引入只需适当配置环境另外可以把众多的测试类集成到一起形成总测试类并且只需要实现suite()方法例如
public static Test suite ( ) {
TestSuite suite= new TestSuite(All JUnit Tests);
suiteaddTest(VectorTestsuite());
suiteaddTest(TestMyBeansuite());
return suite;
}