一、准备
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)); } }