junit也不是完美的,只是个帮助你测试的工具,提高测试的效率,主要是当project较大时,当有修改发生时,你难道要全部重新测一遍?对于问题一,好像没有什么办法,对于问题2,按照白盒测试,测试极限点就可以了,人为测也一样的。

解决方案 »

  1.   

    1、既然有插入,就应有查询,就像get、set方法一样,可以通过这种方式来进行测试,而且做单元测试也不是说每个方法都要测试的,一般是对有一定业务逻辑的方法测试,简单方法通常代码检查就好了。
    2、Junit只是单元测试的工具,是一个框架,并非真正的自动测试,要实现灵活的测试还需要加些辅助的处理,比如:测试数据及结果用XML书写,专门写些类转换数据到Junit测试类中,这样测试数据和测试程序分离。
      

  2.   

    Keri(呵呵2000) xp 的网站上有篇文章说,不要为了测试而修改你原有的代码比如一个private 的方法,有时候其功能很重要,但是为了测试他,楞把他改成了public,这个可不是好事情你们觉得呢?
      

  3.   

    简单回答一下这两个问题:
    问题1,对于没有返回值的方法同样可以做断言,比如以问题中的举例来说,我们在执行测试之前可以明确地期望方法执行之后数据库的表现,比如我们可以精确期望,数据库表TEST_T中增加一条ID=13的纪录。在这样的前提之下,我们就可以对此方法的实现作断言。最基本的方法在Junit下实现是使用JDBC连接到期望的数据库进行断言,当然这样虽然可行,却平白增加了编程的负担(测试代码也不推荐复杂化),如果是Junit,可以参看一下Junit's extension: DBunit (http://www.junit.org),DBunit可以专门做这事。
    问题2,这是一个覆盖度的测试需求,那看你测试的力度和对覆盖度的需求了,100%很难做到的。也看被测试的方法对null有没有保护,如果没有保护,那这样的测试可能还是需要的。
      

  4.   

    问题一, 建议看看 dbunit