快速业务通道

诊断Java代码: Liar View错误模式 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
) == 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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号