JDeveloper自学笔记(三)
时间:2010-09-27 来源:story4sun
通过上一章的学习,对JDeveloper开发有了点入门的概念,但假如JDeveloper仅仅是一个这样的东西,ADF仅仅是这样一个结构:视图严重依赖于具体表对象,页面严重依赖于具体视图对象,缺少可积累的测试程序,没有Java的影子,到处都是XML配置,这样的东西能干多大事情?----我相信它不是,所以,接下来,把疑问一个个解决。
首先最重点的就是单元测试,对于大规模的系统或者是团队合作来说,没有这东西简直就是灾难,开工寻找解决方案。真是众里寻他千百度,暮然回首,她就在灯火阑珊处 ---- Oracle网站上竟然有提供JUnit!要命,这东西干啥不直接放在JDeveloper安装包里面,害我绕了一个大圈。嗯,接下来就是下载…… 呃,不是我要挑Oracle毛病,真是受不了,这东西竟然是从JDeveloper的Help里面的Check Update上下载,真不懂Oracle开发人员怎么想的,非得这么标新立异乜?
回到JDeveloper,打开Help菜单中的Check Update。打开后选中“Official Oracle Extensions and Updates”,然后点击下一步,在搜索中输入JUNIT,得到带JUNIT字样的更新包,选中:BC4J JUnit Integration 和 JUnit Integration ,然后下一步,输入在Oracle站点上注册过的用户名密码,就会自动下载安装了。
安装完毕后,重启JDeveloper,这样就可以在New中看到Unit Tests项目了,终于可以用点脸熟的东西了,感动。
直接拿前面的项目做测试,这下没有可以照抄的步骤了,自己研究。
1 New一个Business Components Test Fixture, 依照向导创建完,在Application下可以看到创建了一个FODModuleAMFixture的类,而且是SingleTone模式的类。这个东西用于创建整个测试系统的环境,就目前来说,默认的已经可以先哪来用了,继续下一步。
2 New一个Business Components Test Suit,依照向导创建,奇怪,向导怎么不让填写自定义包,也没选择要创建测试的是那几个视图?不管了,直接Next到完…… 天,全给加上了,全部的视图都加上了…… 也罢,继续下一步。
3 刚好前面的项目定义了Orders.ShippedDate不能比Orders.OrderDate提前,就拿这个来做测试好了,编写测试代码:
@Test
public void testOrderShipBeforeOrder(){
ViewObject view=fixture1.getApplicationModule().findViewObject("OrdersView1");
Row row=view.next();
Calendar time=Calendar.getInstance();
time.clear();
time.set(Calendar.YEAR,2010);
time.set(Calendar.MONTH,1);
time.set(Calendar.DATE,2);
row.setAttribute("OrderDate", time.getTime());
time.add(Calendar.DATE, -4);
row.setAttribute("OrderShippedDate", time.getTime());
try
{
row.validate();
fail("OrderShippedDate test fail");
}
catch (RowValException x) {
assertTrue(true);
}
} 运行,通过,搞定,明晚继续。(待续)
public void testOrderShipBeforeOrder(){
ViewObject view=fixture1.getApplicationModule().findViewObject("OrdersView1");
Row row=view.next();
Calendar time=Calendar.getInstance();
time.clear();
time.set(Calendar.YEAR,2010);
time.set(Calendar.MONTH,1);
time.set(Calendar.DATE,2);
row.setAttribute("OrderDate", time.getTime());
time.add(Calendar.DATE, -4);
row.setAttribute("OrderShippedDate", time.getTime());
try
{
row.validate();
fail("OrderShippedDate test fail");
}
catch (RowValException x) {
assertTrue(true);
}
} 运行,通过,搞定,明晚继续。(待续)
相关阅读 更多 +