您的位置:软件测试 > 开源软件测试 > 开源单元测试工具 > junit
怎样使用 Junit Framework 进行单元测试的编写
作者:网络转载 发布时间:[ 2014/9/26 11:09:44 ] 推荐标签:Junit 单元测试

  在公开内部状态数据後,我们可以编写我们的测试单元了,单元测试的选择方法和选择尺度已经在本文前面章节进行了说明,但是仍然需要注意的是,由于 assert 方法会抛出一个 error,你应该在测试方法的后集中用 assert 相关方法进行判断,这样可以确保资源得到释放。
对数据库连接池的例子,我们可以建立测试类 DefaultConnectionProxyTest,同时建立数个 test case,如下:

  示例二
 /**
 * 这个类对示例一中的类进行简单的测试。
 *
 */
 public class DefaultConnectionProxyTest extends TestCase {
     private DefaultConnectionProxy conProxy = null;
     private OracleConnectionCacheImpl cacheImpl = null;
     private Connection con = null;
     /** 设置测试的 fixture,建立必要的测试起始环境。
     */
     protected void setUp() {
         conProxy = new DefaultConnectionProxy();
         conProxy.start();
         cacheImpl = conProxy.getConnectionCache();
     }
     /** 对示例一中的对象进行服务启动后的状态测试,检查是否在服务启动后,
连接池的参数设置是否正确。
     */
     public void testConnectionProxyStart() {
         int minConnections = 0;
         int maxConnections = 0;
         assertNotNull(cacheImpl);
         try      {
             minConnections = Integer.parseInt(PropertyManager.getProperty
             ("DefaultConnectionProxy.minConnections"));
             maxConnections = Integer.parseInt(PropertyManager.getProperty
             ("DefaultConnectionProxy.maxConnections"));
         } catch (Exception e) {
             // ignore the exception
         }
         assertEquals(cacheImpl.getMinLimit(), minConnections);
         assertEquals(cacheImpl.getMaxLimit(), maxConnections);
         assertEquals(cacheImpl.getCacheSize(), minConnections);
     }
     /** 对示例一中的对象进行获取数据库连接的测试,看看是否可以获取有效的数据库连接,
并且看看获取连接后,连接池的状态是否按照既定的策略进行变化。由于 assert 方法抛出的是
 error 对象,因此尽可能把 assert 方法放置到方法的后集体进行测试,这样在方法内打开的
资源,才能有效的被正确关闭。
     */
     public void testGetConnection() {
         int cacheSize = cacheImpl.getCacheSize();
         int activeSize = cacheImpl.getActiveSize();
         int cacheSizeAfter = 0;
         int activeSizeAfter = 0;
         con = conProxy.getConnection();
         if (con != null) {
             activeSizeAfter = cacheImpl.getActiveSize();
             cacheSizeAfter = cacheImpl.getCacheSize();
           
             try      {
                 con.close();
             } catch (SQLException e) {
             }
         } else {
             assertNotNull(con);
         }
         /* 如果连接池中的实际使用连接数小于缓存连接数,检查获取的新的数据连接是否
从缓存中获取,反之连接池是否建立新的连接
         */
         if (cacheSize > activeSize)      {
             assertEquals(activeSize + 1, activeSizeAfter);
             assertEquals(cacheSize, cacheSizeAfter);
         } else {
             assertEquals(activeSize + 1, cacheSizeAfter);
         }
     }
     /** 对示例一中的对象进行数据库连接释放的测试,看看连接释放后,连接池的
状态是否按照既定的策略进行变化。由于 assert 方法抛出的是 error 对象,因此尽可
能把 assert 方法放置到方法的后集体进行测试,这样在方法内打开的
资源,才能有效的被正确关闭。
     */
     public void testConnectionClose() {
         int minConnections = cacheImpl.getMinLimit();
         int cacheSize = 0;
         int activeSize = 0;
         int cacheSizeAfter = 0;
         int activeSizeAfter = 0;
         con = conProxy.getConnection();
         if (con != null) {
             cacheSize = cacheImpl.getCacheSize();
             activeSize = cacheImpl.getActiveSize();
             try      {
                 con.close();
             } catch (SQLException e) {
             }
             activeSizeAfter = cacheImpl.getActiveSize();
             cacheSizeAfter = cacheImpl.getCacheSize();
         } else {
             assertNotNull(con);
         }
         assertEquals(activeSize, activeSizeAfter + 1);
         /* 如果连接池中的缓存连接数大于少缓存连接数,检查释放数据连接后是否
缓存连接数比之前减少了一个,反之缓存连接数是否保持为少缓存连接数
         */
         if (cacheSize > minConnections)      {
             assertEquals(cacheSize, cacheSizeAfter + 1);
         } else {
             assertEquals(cacheSize, minConnections);
         }
     }
   
 /** 释放建立测试起始环境时的资源。
     */
 protected void tearDown() {
         cacheImpl = null;
         conProxy.destroy();
     }
     public DefaultConnectionProxyTest(String name) {
         super(name);
     }
 /** 你可以简单的运行这个类从而对类中所包含的测试单元进行测试。
     */
     public static void main(String args[]) {
         junit.textui.TestRunner.run(DefaultConnectionProxyTest.class);
     }
 }

上一页123下一页
软件测试工具 | 联系我们 | 投诉建议 | 诚聘英才 | 申请使用列表 | 网站地图
沪ICP备07036474 2003-2017 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd