晚上简单与小兵交流了下使用junit测试操作FileNet PE的类的方法,使用使用junit做测试较在类中直接使用main()方法做测试好处不言而喻。虽然做lab,使用junit做测试其必要性和优越性表现的不大,但这件事仍旧值得挖掘下。
Junit作为一个知识点早已经学习了,而学习就是一个知识点一个知识点进行的,知识点本身是死的,不加以灵活运用它是不会主动帮助我们解决问题的。
测试filenet操作类是一个问题,没有去思考所涉及的知识点,尝试利用所学知识点,而在学习知识点的时候也没去归纳它的用途,思考它的应用场景,总之就是没有将知识点与实际问题相互作用,也就失去了融汇贯通的机会,融汇贯通的境界也就是米老师提的知识网。简单解析为下图,以警学习过程中对学习方法的遗弃。图中P为知识点,Q为实际问题,PQ上的两个箭头为相互作用,想想一下PQ及相互作用不断增多会是中什么局面?
下面简单回顾下junit的使用。
1. 引入junit.jar,下载地址:http://www.junit.org/
2. 测试类需要继承TestCase类, 方法无返回值,没有参数。
3. 一点规范:
1) 测试类名称采用被测试类名称尾部加上Test,
2) 测试类中的方法名称采用test+被测试的方法。
4. 断言:做单元测试有个绿色进度条,但还是得用肉眼看才能判断出其是否能直行通过。如果我们要在收工回家时让其自动运行我们的测试用例,检验正确性,就要使用到Junit的断言了。断言提供给了预期值和实际值的比较方法。
5.setUp()方法可以处理测试方法执行前要做的事情,如登录到PE,tearDown()可以处理测试方法执行后要做的事情,如退出PE。
代码举例:
原类:public class RosterQueryEDU
此类中待测试的方法: public boolean rosterQueryEDU(VWSession vwSession)
测试类代码(注意对比测试方法中的断言与非断言的使用):
/**
* function:
* author:Chen WeiDong
* data time:Jun 30, 2011 10:51:56 PM
*/
package com.ibm.filenet.edu;
import filenet.vw.api.VWSession;
import junit.framework.TestCase;
public class RosterQueryEDUTest extends TestCase {
RosterQueryEDU myInstance=null;
VWSession vwSession=null;
protected void setUp() throws Exception {
//instantite
myInstance=new RosterQueryEDU();
//VWSession
vwSession=myInstance.logon("administrator", "filenet");
}
protected void tearDown() throws Exception {
myInstance.peLogOffEDU(vwSession);
}
public void testRosterQueryEDU(){
boolean actual=myInstance.rosterQueryEDU(vwSession);
//junit assert
this.assertEquals(true, actual);
//if we don't use junit assert,then we should to see the output result
System.out.print("the result is:"+actual);
}
}