最近复习了一下junit 单元测试的用法,为了加深印象,用juint3和4做比较,看看有哪些不同:
junit3 有两个无理的要求:
1 测试用例必须继承TestCase类
2 测试方法的名称必须以test开头
这两个要求对我们写测试用例增加了无谓了束缚!
junit4彻底改变了这两个问题
1 不用继承任何类,减少代码耦合性
2 采用Annotation(元数据)表明方法的用途。有以下几类:
@Before 在每一个测试方法前要执行的方法
@After 再每一个测试方法后要执行的方法
@Test
@ignore 忽略某个方法
3 高级的注视方法:
@BeforeClass 这是在整个测试用例前执行的方法 例如读取一个文件 获取数据库连接等
@AfterClass 这是在整个测试用例后执行的方法 例如关闭连接
@Test(expected=XX,timeout=XX) 要测试的方法 expected异常测试 timeout时间限制测试
@RunWiht(XXX.class)选择测试加载器
public class TestDb {
private static Connection conn = null;
private static String url = "jdbc:oracle:thin:@172.19.37.10:1521:edadev";
private static String driverClassName = "oracle.jdbc.driver.OracleDriver";
private static String user = "score";
private static String pass = "score";
@BeforeClass
public static void setUp() throws Exception {
Class.forName(driverClassName).newInstance();
conn = DriverManager.getConnection(url, user, pass);
}
@AfterClass
public static void tearDown() throws Exception {
conn = null;
}
@Test
public void testGetOneData() {
try {
Statement st = conn.createStatement();
String sql = "select 2-1 as tmp from dual";
ResultSet rs = st.executeQuery(sql);
String str = null;
while (rs.next()) {
str = rs.getString("tmp");
}
System.out.println(str);
assertEquals("1", str);
} catch (Exception e) {
e.printStackTrace();
}
}
}
4 参数化测试 (后续单独研究一下)
5 打包测试
1 任意写个类
2 再类的开始要加以下注视 Suite.class是要选择的Runner TestDb.class是一个测试的类
@RunWith(Suite.class)
@Suite.SuiteClasses(TestDb.class,....)
public class TestSuit {
}
junit3 有两个无理的要求:
1 测试用例必须继承TestCase类
2 测试方法的名称必须以test开头
这两个要求对我们写测试用例增加了无谓了束缚!
junit4彻底改变了这两个问题
1 不用继承任何类,减少代码耦合性
2 采用Annotation(元数据)表明方法的用途。有以下几类:
@Before 在每一个测试方法前要执行的方法
@After 再每一个测试方法后要执行的方法
@Test
@ignore 忽略某个方法
3 高级的注视方法:
@BeforeClass 这是在整个测试用例前执行的方法 例如读取一个文件 获取数据库连接等
@AfterClass 这是在整个测试用例后执行的方法 例如关闭连接
@Test(expected=XX,timeout=XX) 要测试的方法 expected异常测试 timeout时间限制测试
@RunWiht(XXX.class)选择测试加载器
public class TestDb {
private static Connection conn = null;
private static String url = "jdbc:oracle:thin:@172.19.37.10:1521:edadev";
private static String driverClassName = "oracle.jdbc.driver.OracleDriver";
private static String user = "score";
private static String pass = "score";
@BeforeClass
public static void setUp() throws Exception {
Class.forName(driverClassName).newInstance();
conn = DriverManager.getConnection(url, user, pass);
}
@AfterClass
public static void tearDown() throws Exception {
conn = null;
}
@Test
public void testGetOneData() {
try {
Statement st = conn.createStatement();
String sql = "select 2-1 as tmp from dual";
ResultSet rs = st.executeQuery(sql);
String str = null;
while (rs.next()) {
str = rs.getString("tmp");
}
System.out.println(str);
assertEquals("1", str);
} catch (Exception e) {
e.printStackTrace();
}
}
}
4 参数化测试 (后续单独研究一下)
5 打包测试
1 任意写个类
2 再类的开始要加以下注视 Suite.class是要选择的Runner TestDb.class是一个测试的类
@RunWith(Suite.class)
@Suite.SuiteClasses(TestDb.class,....)
public class TestSuit {
}