我写了一个类,类中主要有一个方法,这个方法逻辑简单,就是顺序调用别的类的一些方法,但是那些方法又是一个里边调一个的,最终调到一个方法里要用到得到servlet上下文的方法,现在上边要我对我写的类方法进行单元测试,我怎么测.是用junit测,能测么.

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【duke731】截止到2008-07-22 09:29:43的历史汇总数据(不包括此帖):
    发帖的总数量:33                       发帖的总分数:562                      每贴平均分数:17                       
    回帖的总数量:316                      得分贴总数量:111                      回帖的得分率:35%                      
    结贴的总数量:22                       结贴的总分数:328                      
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:11                       未结的总分数:234                      
    结贴的百分比:66.67 %               结分的百分比:58.36 %                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %                  
    楼主加油
      

  2.   

    你的意思是不是有一个方法A,A的处理是调B,B里面又要调用C,....现在要对A进行单元测试?可以做一个假的B类来测试A
      

  3.   

    对呀,就是这个意思,等调到E时,E里调用了getServletContext(),我用右键点测试类>run as junit test 这样有可能得到servletcontext嘛
      

  4.   

    一个方法里要用到得到servlet上下文的方法
    问题在这,别的都可以,这个不行。
    需要借助mock之类的东西对网络上下文进行模拟,挺麻烦的。
      

  5.   


    非常麻烦,而且出了问题你无法确定是ABCDE那个类的错误.我的理解是既然你要对A做单体测试,那么只需要看他能不能调用B就可以了.没必要再去看B里面调用C,C里面调用D......这些的结果.所以你只需要做一个假的B,能得到A可以正确调用B这个结论就可以了.
      

  6.   

    如果只针对A进行单元测试的话,不需要去考虑其他的正确与否,比如A调B得到返回值,可以直接写一个死值。
    尽最大可能保持单元测试的独立性。
      

  7.   

    可问题是,B并不是简单地返回一个值啊.A方法传入一个数据,并且要返回处理过的数据,真正对数据的处理是在B,C,D中进行,A中根本就没有对数据处理的代码我要是做个假的B,那也没什么用了.
      

  8.   

    class A{
    Object p1 = new Object();
    Object returnValue = null;
    //把data中数据装到p1中
    doA(String data,p1){
    returnValue= doB(data,p1);
    return returnValue;
    };}
    下边是别的类中方法
    doB(data,p1) {
    doC(data,p1);
    }
    //把data进行各种处理
    doC(data,p1) {
    doD(data,p1);
    doE(data,p1);
    }所以我要在A中给个假值没什么意义,因为A中根本没做什么实际操作,如果我要追进去,那类可多了,得排到doK吧.
      

  9.   


    因为你是要对A做单元测试.就算真正的处理在B,在C,那是对B,C做单元测试要考虑的问题.
      

  10.   

    就是啊,可是我现在要测A,要测A就要把B,C,D等等全都模拟出数据,因为调用的doB,doC,doD等方法中有很多都是调用那个类自身的变量完成的,而这些类变量又是在别的步骤中赋值的.........我有个问题,现在单元测试是很流行,但在一个大项目中,能够说所有的类都能进行单元测试么