可以用main函数和JUnit来写测试代码。main是最早使用的,但是现在更流行的测试工具是JUnit。
成都创新互联成立于2013年,先为德钦等服务建站,德钦等地企业,进行企业商务咨询服务。为德钦企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
JUnit是一个Java语言的单元测试框架。它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个。 JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。
下面是一些具体的编写测试代码的技巧或较好的实践方法:
1. 不要用TestCase的构造函数初始化Fixture,而要用setUp()和tearDown()方法。
2. 不要依赖或假定测试运行的顺序,因为JUnit利用Vector保存测试方法。所以不同的平台会按不同的顺序从Vector中取出测试方法。
3. 避免编写有副作用的TestCase。例如:如果随后的测试依赖于某些特定的交易数据,就不要提交交易数据。简单的回滚就可以了。
4. 当继承一个测试类时,记得调用父类的setUp()和tearDown()方法。
5. 将测试代码和工作代码放在一起,一边同步编译和更新。(使用Ant中有支持junit的task.)
6. 测试类和测试方法应该有一致的命名方案。如在工作类名前加上test从而形成测试类名。
7. 确保测试与时间无关,不要依赖使用过期的数据进行测试。导致在随后的维护过程中很难重现测试。
8. 如果你编写的软件面向国际市场,编写测试时要考虑国际化的因素。不要仅用母语的Locale进行测试。
9. 尽可能地利用JUnit提供地assert/fail方法以及异常处理的方法,可以使代码更为简洁。
10.测试要尽可能地小,执行速度快。
11.不要硬性规定数据文件的路径。
12.利用Junit 的自动异常处理书写简洁的测试代码
事实上在Junit 中使用try-catch 来捕获异常是没有必要的,Junit 会自动捕获异常。那些没有被捕获的异常就被当成错误处理。
13. 充分利用Junit 的assert/fail 方法
assertSame()用来测试两个引用是否指向同一个对象
assertEquals()用来测试两个对象是否相等
14. 确保测试代码与时间无关
15. 使用文档生成器做测试文档。
可以用main方法(主方法)进行单元测试
或者使用@Junit 家在方法上面
JAVA中的测试类是用来是用来对已经写好的功能组件进行测试的。
可以有两种方法进行测试:
第一种:另外新建一个带有main方法的类,利用该类来调用需要测试的类,把需要测试的数据传入进去即可。比如:
需要测试的类是ScoreQuery(String stuNum, String subject);
public class TestCase{
public static void main(String[] args) {
ScoreQuery scoreQuery= new ScoreQuery("Tom", "150110101");
Map map = new HashMap();
map = scoreQuery.query();
System.out.println(map);
}
}
可以利用上面的方法对ScoreQuery(String stuNum, String subject)进行功能测试。
这种方法的好处就是比较简单,容易实现;但是弊端也很明显,不能进行功能重用,而且每次都要重复很多无用的代码。
第二种方法就是创建测试的功能组件,每次实现该功能组件对其他组件进行测试。
public class SimpleTestCase(){
Object object;
public staitc void prepare(){
Map map = new HashMap();
map.put("", "");
......
BeanUtils.map2Bean(map, object);
}
}
以后的测试类只需继承上面的测试类即可。
简单给你分析了一下,有好几个测试点:
正确获取到barcode。
正确试用barcode生成readerForm
使用readerForm获取读者条码
正确设置readerinfo
代码写得耦合度不够低,但还算可以,需要你用打桩来完成测试:
写一个request的子类,改写request中的getParameter方法,使之返回你想要的东西。
写一个readerDAO的子类,改写queryM的方法,验证readerForm中是否有正确的barcode,并保存结果,调用完毕后通过get方法查询结果。queryM方法的返回结果你自己来定义,方便后面验证
还是request的子类,改写setAttribute方法,验证readerinfo是否是之前readerDAO的返回结果。
不要测试是否是数据库里的值,是否是数据库里的值应该对readerDAO编写测试用例,而不是这个类。