诊断Java代码: Liar View错误模式 - 编程入门网
) == 2);
view.setSelectedIndex(0);
assert(view.getSelectedValue().equals("test0"));
controller.pause();
toggle = model.toggle;
model.remove(0);
assert(toggle == ! model.toggle);
controller.pause();
assert(model.getSize() == 1);
view.setSelectedIndex(0);
assert(view.getSelectedValue().equals("test1"));
controller.pause();
System.exit(0);
}
}
class Model extends AbstractListModel {
boolean switch = false;
private Vector elements = new Vector();
...
public void fireIntervalAdded(AbstractListModel m, int start, int end) {
super.fireIntervalAdded(m,start,end);
this.switch = ! this.switch;
}
public void fireIntervalRemoved(AbstractListModel m, int start, int end) {
super.fireIntervalAdded(m,start,end);
this.switch = ! this.switch;
}
}
诊断Java代码: Liar View错误模式(4)时间:2011-02-12 IBM Eric E. Allen通过使用 setSelectedIndex() 和 getSelectedIndex() ,我们对程序进行测试,测试虽只是稍有不同,但却有极大改善。修改后的测试不单检查模型,还检查视图,而且不只简单地检查行的数量,还检查所选行的内容。 直接核查视图的另一种方法是使用 Java Robot 类(在 Java 1.3 API 中有介绍 ― 请参阅 参考资料),使 GUI 的鼠标和键盘的物理操作真正实现自动化。 Robot 类还允许您对屏幕的局部进行快照,允许建立基于 GUI 视图实际物理布局的测试。当然,如果视图的物理布局不如其逻辑结构稳定,这种能力会成为一种缺点。每次物理布局改变时,都必须重写几个测试是很痛苦的。因此,对于视图不会频繁改变的成熟的 GUI,我推荐您使用 Robot 类作为测试工具。要测试逻辑方面的问题,您可以象我们上面所做的那样,调用视图的方法。 最后一条忠告:对视图对象中简单地把调用弹回到模型的方法要小心。这样做很快就会引入 Liar View。特别是 JTables,其中包含有很多这样的方法。 总结 以下是本周讨论的错误模式的小结: 模式:Liar View 症状:GUI 程序通过了测试套件的测试,但后来却显示出本该在那些测试中被消除了的行为。 起因:测试只在模型方面做检查,而没有在视图方面做检查。 治疗及预防措施:在视图方面做检查。 一点一点地,我们终于努力学完了关于最常见(也最让人沮丧)的错误模式的解决方案,但我们仍然有很多事情要做。下次,我们将对付一种更具破坏性的错误:破坏者数据,数据一开始是完美的……直到存取它们时。且待下回分解! |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |