junit测试

传智播客——MVC加强和Junit测试框架 (2010-01-13 21:32:25)

1.10

思路:个人认为,模式是死的,人是活的。编程就是要把死的模式玩活。

     a.原MVC的缺陷,不能满足如银行转账等需要统一事务处理的业务,因此引出在modle层中分出业务逻辑层。

     b.Junit测试框架的使用。

思考:在开发中为什么要引入业务层?

MVC:model  view  controller

在Model的工厂前添加业务层。主要用来封装将要用到的业务看成一个整体。同时提交或同事失败。

 

存款流程:  存款表 和  账户表      先插入存款然出在存入账户

自动提交失效:conn.setAutoCommit(false)  

提交事务: conn.commit();

回滚事务: conn.rollback();

 

 

添加的业务逻辑的代码:

public void saveInAccount(InAccount inAccount) {

       

   

 

        DBManager dbManager=null;

        Connection conn=null;

        InAccountDao inAccountDao=null;

        AccountDao accountDao=null;

       

        //获取DBManager对象

        dbManager=DBManager.getDbManager();

       

        //获取连接

        conn=dbManager.getConnection();

       

        //获取InAccountDao接口的对象

        inAccountDao=DaoFactory.getInAccountDao();

        accountDao=DaoFactory.getAccountDao();

        try{

///

       //设置连接为非自动提交

        dbManager.beginTransaction(conn);

       

       

       

       

         //1 存款(insert) 插入到inaccount表

        inAccountDao.saveInAccount(conn,inAccount); //还没有提交

       

        //2 查询账户余额(select) //account表

        Account account=accountDao.findBalancebyAccountid(conn,inAccount.getAccountid());

       

        //输出余额

        System.out.println("**** "+account.getBalance());

       

        //3 更新账户余额(update)

        //计算当前账号的金额

        Double balance=inAccount.getInbalance()+account.getBalance();

        //修改余额

        account.setBalance(balance);

       

        accountDao.updateAccount(conn,account);

       

        //真正提交

        dbManager.commitTransaction(conn);

///

        }catch(Exception e){

        dbManager.rollbackTransaction(conn);

        e.printStackTrace();

        }finally{

        dbManager.closeResource(conn, null,null);

        }

    }

MVC异常处理:

 

程序中的异常一般都在  控制层进行统一处理

 

异常类型:   

Throwable : 

Exception  :a.  RuntimeException    运行时异常,不用捕获和声明

           b.  检查异常   需要捕获和声明   //检查异常可以转换为非检查异常

 

自定义异常

 

思路:即,每个分层都对应一个异常处理类,在该层进行异常捕获,并抛出到上一层,直到控制层为止,并在控制层进行统一的异常处理,然后转到异常处理页面。显示汉字异常信息。

 

目录结果如下:

 

 

 

 

junit测试框架

    什么是Junit?

JUnit是一个开发源代码的Java测试框架,用于编写和运行可重复的测试。他是用于单元测试框架体系xUnit的一个实例(用于java语言)。它包括以下特性:
1、用于测试期望结果的断言(Assertion)
2、用于共享共同测试数据的测试工具
3、用于方便的组织和运行测试的测试套件
4、图形和文本的测试运行器

安装:导入junitJar到项目中。

   最新版是4.4   下载网址:从Junit(http://www.junit.org/index.htm或http://download.sourceforge.net/junit/)下载最新的软件包.
    使用:

老式的:

        实现extends TestCase类。

  然后在要测试的方法中调用方法进行测试:this.assertEquals(expected, actual);

       实例:

               Compute c=null;

              

              

               protected void setUp() throws Exception {

                  System.out.println("setUp");

                  c=new Compute();

               }

              

              

               protected void tearDown() throws Exception {

                System.out.println("tearDown");

               }

 

               //测试add方法的正确性

               public void testAdd(){

                System.out.println("testAdd");

                //this.assertEquals(0, c.add(0, 0));

                this.assertEquals(3, c.add(1, 2));

                this.assertEquals(9, c.add(4, 5));

               }

新式的:

JUnit 4 使用 Java 5 中的注解(annotation),以下是JUnit 4 常用的几个 annotation 介绍
@Before:初始化方法
@After:释放资源
@Test:测试方法,在这里可以测试期望异常和超时时间
@Ignore:忽略的测试方法
@BeforeClass:针对所有测试,只执行一次,且必须为static void
@AfterClass:针对所有测试,只执行一次,且必须为static void
一个JUnit 4 的单元测试用例执行顺序为:
@BeforeClass –> @Before –> @Test –> @After –> @AfterClass
每一个测试方法的调用顺序为:
@Before –> @Test –> @After

 

增强:可以单独运行某个方法

实例:

static Compute c=null;

   

    // 1 BeforeClass 该方法最先执行,只执行一次

    @BeforeClass

    public static  void beforeClass(){

        c=new Compute();

       System.out.println("beforeClass");

    }

 

    // 5  AfterClass 该方法最后执行,只执行一次

    @AfterClass

    public static  void afterClass(){

       System.out.println("afterClass");

    }

   

    // 2 Before注解表示在运行测试方法前执行

    @Before

    public void beforeMethod(){

       System.out.println("beforeMethod");

    }

   

    //4 after注解表示在运行测试方后执行

    @After

    public void afterMethod(){

       System.out.println("afterMethod");

    }

   

    //3 Test注解要运行测试的方法

    @Test

    public void add(){

       System.out.println("Add");

       Assert.assertEquals(0, c.add(0, 0));

    }

      

    @Test

    public void mul(){

       System.out.println("Mul");

        Assert.assertEquals(0, c.mul(0, 0));

       Assert.assertEquals(3, c.mul(1, 3));

       Assert.assertEquals(20, c.mul(4, 5));

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值