您的位置:首页 > 产品设计 > UI/UE

【翻译】Google - Testing on the Toilet - 有助于GUI测试的MVP框架

2010-03-08 12:13 706 查看
就像所有的体育项目发现丑闻都是后期,这些天很难找到好的角色模型。但是,当你的角色模型是一个域模型(业务实体对象模型),你不需要欺骗做一个MVP -
使用“模型视图主持人”模型!

MVP和MVC(模型视图控制器)非常相似。
MVC中,表示逻辑被控制器和视图共享,如下面的图所示。视图通常是直接继承自GUI框架的控件,观察模型的变化,并通过视图(GUI控件)显示模型的数据变化给用户。控制器负责决定如何转换用户事件到模型的更新。在MVP里,表示逻辑完全由“监督控制器”接管,也被称为“主持人”。



视图变成被动视图,代理给主持人。

public CongressionalHearingView() {
testimonyWidget.addModifyListener(
new ModifyListener() {
public void modifyText(ModifyEvent e) {
presenter.onModifyTestimony(); // presenter decides action to take
}});
}


主持人从模型里取出数据来更新视图。

public class CongressionalHearingPresenter {
public void onModifyTestimony() {
model.parseTestimony(view.getTestimonyText()); // manipulate model
}
public void setWitness(Witness w) {
view.setTestimonyText(w.getTestimony()); // update view
}
}


这样分工可以是代码更加模块化,并且可以使针对主持人和视图的单元测试更加简单。

public void testSetWitness() {
spyView = new SpyCongressionalHearingView();
presenter = new CongressionalHearingPresenter(spyView);
presenter.setWitness(new Witness(“Mark McGwire”, “I didn't do it”));
assertEquals( “I didn't do it”, spyView.getTestimonyText());
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: