Eclipse中使用JUnit4测试JDBC接口实现
一、准备
1)待测试编写好的JDBC类;
2)项目中导入ojdbc14.jar(编写JDBC的时候就已导入,点击查看)和JUnit4库:Properties --> Java Build Path --> Add Library... --> JUnit-Next-JUnit4-Finish;
二、创建和编写测试用例
1)在“JDBC类名.java”上new一个JUnit Test Case,Name最好写成“测试类类名Test”的形式,多选项中只选setUp(),Class under test 可以手动输入“包名.测试类类类名”或者Browse输入“测试类类名”,然后Next,选择要测试的方法,最后Finish,Eclipse自动生成了一串测试方法(无方法体,自己编译),统一名字都为“test方法名”。
建议:在import包之后public测试类之前最好加一句@FixMethodOrder(MethodSorters.NAME_ASCENDING) ,同时把测试类中的方法名都改为“testxxx方法名”,xxx为000-999,这句话的目的是给测试的方法排序,比如我要测的是使用JDBC操作Oracle数据库,添加、删除、查询数据是需要有先后顺序的;
2)给测试方法写方法体
注意:
①测试方法必须用public void修饰;
②每一个测试用例都要包含元数据,如@Test(注意大小写),使用Eclipse创建测试类已经自动写好了,@Test指明了下面是要测试的方法。@BeforeClass(@AfterClass)会在所有的测试方法开始(结束)前(后),先运行一遍它里面写的方法,比如我是要连接数据库进行操作的,要是使用@Before的话,会在每一个测试方法前都连接一次数据库,如果数据库内容很多,那么就拖慢了整个测试的速度,所以这时就有了@BeforeClass(@AfterClass),即在所有测试方法前先连接上数据库,待所有测试方法执行完后再关闭数据库;
③@Ignore写在一个方法的@Test前面时,执行测试时会自动忽略这个方法,比如还没实现这个测试方法的时候就可以用@Ignore("说明Ignore的原因")标注。
我的测试程序如下:
package zapp;
import static org.junit.Assert.*;
import org.junit.BeforeClass;
import org.junit.AfterClass;
import org.junit.FixMethodOrder;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runners.MethodSorters;
import zapp.App;
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class AppTest0 {
private static App JDBC = new App("scott","tiger");
final String select = "SELECT * FROM salary ORDER BY empid";
/*所有操作开始之前连接数据库*/
@BeforeClass
public static void setUp() throws Exception {
JDBC.createConnection();
}
/*所有操作结束之后关闭数据库*/
@AfterClass
public static void tearDown() throws Exception {
JDBC.closeConnection(JDBC.createConnection());;
}
/*插入测试*/
@Test
public void test001Insert() {
String insert = "INSERT INTO salary VALUES "
+ "(5,'蒲xx',2144.63,trunc(to_Date('19900304','YYYYMMDD')),'Analyst')";
assertEquals(0,JDBC.insert(insert));
}
/*查询测试*/
@Test
public void test002SelectSql() {
assertEquals(null,JDBC.selectSql(select));
}
/*打印测试*/
@Test
public void test003PrintRs() {
JDBC.printRs(JDBC.selectSql(select));
}
/*删除测试,删除后查询打印*/
@Test
public void test004Delete(){
String delete = "DELETE FROM salary WHERE EMPID=5";
JDBC.delete(delete);
JDBC.selectSql(select);
JDBC.printRs(JDBC.selectSql(select));
assertEquals(0,JDBC.delete(delete));
}
}