论坛首页 Java企业应用论坛

Junit 单元测试总结

浏览 4911 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-12-03  
最近复习了一下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 {

    }
 
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics