首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

50分!请单体测试(JUnit)高手帮小弟我解惑

2011-11-24 
50分!请单体测试(JUnit)高手帮我解惑!第一次使用JUnit这个工具我有一个函数,主要是根据输入的日期对数据库

50分!请单体测试(JUnit)高手帮我解惑!
第一次使用JUnit这个工具
我有一个函数,主要是   根据输入的日期   对数据库   进行检索,将结果显示在页面上请问大哥们,如何对这个函数进行UT?

函数被调用如下
if(operation.saveAction(dateManageForm,request)){.....}

函数如下
public   boolean   saveAction(F00009Form   dateManageForm,
                        HttpServletRequest   request){
               
                //DB操作实例化
                DBCommon   db   =   new   DBCommon();
               
                //得到查询中得到的List值              
                List   dataList   =   dateManageForm.getStrutsAction();
             
                //考试ID
                String   testId   =   dateManageForm.getTestId();
                //学科ID
                String   subjectId   =   dateManageForm.getSubjectId();
                //考试日期
                String   testDate   =   dateManageForm.getTestDate();
               
                //考试区分
                String   testDiff;
               
                //考试区分要进行相应处理
                if( "one ".equals(dateManageForm.getTestDiff()))
                        testDiff= "1 ";
                else
                        testDiff= "0 ";
               
                //实例化StrutsData
                StrutsData   sd   =   new   StrutsData();
               
                //初始化考试ID
                sd.setTestId(testId);
                //初始化学科ID
                sd.setSubjectId(subjectId);
                //初始化考试日期
                sd.setTestDate(testDate);
                //初始化考试区分
                sd.setTestDiff(testDiff);
               
                //实例化StringBuffer
                StringBuffer   sb   =   new   StringBuffer();
               


                //SQL语句
                sb.append(   "INSERT   INTO   testschedule "   );
                sb.append(   "( "                                                 );
                sb.append(         "test_id "                               );
                sb.append(         ", "                                           );
                sb.append(         "subject_id "                         );
                sb.append(         ", "                                           );
                sb.append(         "test_date "                           );
                sb.append(         ", "                                           );
                sb.append(         "test_division "                   );
                sb.append(   ") "                                                 );
                sb.append(   "VALUES "                                       );
                sb.append(   "( "                                                 );
                sb.append(         " ' "                                           );
                sb.append(testId);
                sb.append(         " ' "                                           );
                sb.append(   ", "                                                 );


                sb.append(         " ' "                                           );
                sb.append(subjectId);
                sb.append(         " ' "                                           );
                sb.append(   ", "                                                 );
                sb.append(         " ' "                                           );
                sb.append(testDate);
                sb.append(         " ' "                                           );
                sb.append(   ", "                                                 );
                sb.append(         " ' "                                           );
                sb.append(testDiff);
                sb.append(         " ' "                                           );
                sb.append(   ") "                                                 );
                       

                //数据库连接
                Connection   conn=null;
                if   (!dateManageForm.getIsJunit())   {
                        conn   =   db.openConnection();
                }   else   {
                        conn   =   db.junitOpenConnection();
                }
               
                Statement   st   =   null;
                try{


                        st   =   conn.createStatement();
                       
                        //执行数据库操作
                        st.executeUpdate(sb.toString());
                        db.commit();
                       
                        //往Session加入数值,页面显示操作结果
                        HttpSession   session   =   request.getSession();
                        session.setAttribute( "DBMessage ",   "保存成功 ");
                }
                catch(Exception   ex){  

                        //退回防止数据被死锁
                        db.rollback();
                       
                        //在日志中设置错误信息
                        LogConst.setErrorMsg(this.getClass().getName(),ex.getMessage());
                       
                        //往Session加入数值,页面显示操作结果
                        HttpSession   session   =   request.getSession();
                        session.setAttribute( "DBMessage ",   "保存失败 ");
                       
                        //返回错误,跳转
                        return   false;
                }
                finally{                        
                        try   {
                                st.close();
                                conn.close();
                        }   catch   (SQLException   e)   {
                                //在日志中设置错误信息
                                LogConst.setErrorMsg(this.getClass().getName(),e.getMessage());
                                e.printStackTrace();


                               
                                return   false;
                        }
                }
                //往List中添加插入的数值
                //dataList.add(sd);
               
                //设置Form中添加List,这样就可以保存到Session
                //dateManageForm.setStrutsAction(dataList);
                               
                return   true;
        }

[解决办法]

在JDK1.4中,

测试类继承自TestCase,把你的上面的代码放到测试类中,该测试类方法名是test开头的。

[解决办法]
可以用assertEquals()方法验证你期望的值与你得到的值进行比较
例如:
assertEquals( "1 ", String.valueOf(getRequest().getAttribute( "subject_id ")));
其中的“1”是你期望的值 后面就是在request里面取得的值
[解决办法]
关注
[解决办法]
javascript验证数据不通过的话,还会提交吗?提交的话,在测试类里定义一个方法,在方法里定义一个你要测试的类的对象,把你的数据当参数传给这个对象要测试的方法,一般一组数据只测试一个分枝吧,没具体做过,但看别人做了,不知道是不是这样的.
[解决办法]
我的意思是说,一般情况下javascript验证不通过的话,不会向后台提交吧.或者你的意思是故意用错误数据来做测试,那是不是应该放到程序里边做数据呢,我不是做测试的,但是感觉这部分的测试应该是指后台程序的测试.还是找找专业人士问问吧

热点排行