您的位置:程序门 -> java -> web 开发



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


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


50分!请单体测试(junit)高手帮我解惑![已结贴,结贴人:freedomallen]
发表于:2007-09-03 13:44:14 楼主
第一次使用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;
        }
发表于:2007-09-03 14:07:331楼 得分:10

在jdk1.4中,

测试类继承自testcase,把你的上面的代码放到测试类中,该测试类方法名是test开头的。
发表于:2007-09-03 14:18:002楼 得分:0
能给我演示一点测试代码么?
随便说下,我是struts,继承mockstrutstestcase
发表于:2007-09-03 14:26:313楼 得分:10
可以用assertequals()方法验证你期望的值与你得到的值进行比较
例如:
assertequals( "1 ",   string.valueof(getrequest().getattribute( "subject_id ")));
其中的“1”是你期望的值     后面就是在request里面取得的值
发表于:2007-09-03 14:48:124楼 得分:10
关注
发表于:2007-09-03 17:57:355楼 得分:0
我现在遇到一个问题就是::
如果我测试的数据是故意错误的,该数据在页面上就已经被javascript验证掉了,这种数据是否要放到ut中去测试?如果要的话,怎么测??
发表于:2007-09-03 18:28:476楼 得分:10
javascript验证数据不通过的话,还会提交吗?提交的话,在测试类里定义一个方法,在方法里定义一个你要测试的类的对象,把你的数据当参数传给这个对象要测试的方法,一般一组数据只测试一个分枝吧,没具体做过,但看别人做了,不知道是不是这样的.
发表于:2007-09-03 18:33:107楼 得分:0
楼上的大哥,貌似没有听懂,可以说的更详细么?
发表于:2007-09-05 08:48:408楼 得分:10
我的意思是说,一般情况下javascript验证不通过的话,不会向后台提交吧.或者你的意思是故意用错误数据来做测试,那是不是应该放到程序里边做数据呢,我不是做测试的,但是感觉这部分的测试应该是指后台程序的测试.还是找找专业人士问问吧
发表于:2007-09-05 08:58:219楼 得分:0
我现在遇到一个问题就是::
如果我测试的数据是故意错误的,该数据在页面上就已经被javascript验证掉了,这种数据是否要放到ut中去测试?如果要的话,怎么测??

如果可以确定一定不会有上述的错误数据提交到后台,那么可以不进行测试。


快速检索

最新资讯
热门点击