junit也不是完美的,只是个帮助你测试的工具,提高测试的效率,主要是当project较大时,当有修改发生时,你难道要全部重新测一遍?对于问题一,好像没有什么办法,对于问题2,按照白盒测试,测试极限点就可以了,人为测也一样的。
解决方案 »
- 高分寻求《深入浅出JAVA SWING 程序设计》电子书
- java 里面有没有类似 C++里面的预编译指令:#ifdef identifier如果identifier为一个定义了的符号,your code就会被编译,否则剔除
- 如何得到一个bmp的BufferedImage?
- 我在家里这里没有电脑,整个寒假都不能用电脑,很烦躁.
- 知道MD5算法的请进
- java.util.Date类型向java.sql.Date类型转换之间的一个小问题,请大家进来看看
- 98下如何用JDK进行编译,谢谢
- JAVA的内存可以开多大,数组的大小有限制吗?
- JAVA利用SOCKET实现的客户端和服务端之间的通讯问题
- 使用同步的多线程和单线程之间有什么区别
- 奇怪问题?(怪、怪。。。)
- 请问如何在applet中实现图象的动态转化?
2、Junit只是单元测试的工具,是一个框架,并非真正的自动测试,要实现灵活的测试还需要加些辅助的处理,比如:测试数据及结果用XML书写,专门写些类转换数据到Junit测试类中,这样测试数据和测试程序分离。
问题1,对于没有返回值的方法同样可以做断言,比如以问题中的举例来说,我们在执行测试之前可以明确地期望方法执行之后数据库的表现,比如我们可以精确期望,数据库表TEST_T中增加一条ID=13的纪录。在这样的前提之下,我们就可以对此方法的实现作断言。最基本的方法在Junit下实现是使用JDBC连接到期望的数据库进行断言,当然这样虽然可行,却平白增加了编程的负担(测试代码也不推荐复杂化),如果是Junit,可以参看一下Junit's extension: DBunit (http://www.junit.org),DBunit可以专门做这事。
问题2,这是一个覆盖度的测试需求,那看你测试的力度和对覆盖度的需求了,100%很难做到的。也看被测试的方法对null有没有保护,如果没有保护,那这样的测试可能还是需要的。