Eclipse 中的 JFace 数据绑定,第 3 部分: 使用高级功能(5/19)

本文介绍如何使用JUnit编写针对PresentationModel的测试案例,通过实例演示了如何根据Contact对象的状态控制某些字段的可启用性。
 
前一页第 5 页,共 19 页后一页


对本教程的评价

帮助我们改进这些内容


编写可测试的 Presentation Model:测试

要将先前的示例重构为使用 Presentation Model 的示例,第一步是编写测试。为此,需要将 JUnit 支持添加到项目中。在软件包浏览器中单击 META-INF/MANIFEST.MF 文件,以打开 Eclipse MANIFEST.MF 编辑器。然后,单击 Dependencies 选项卡并单击 Required Plug-ins 部分中的 Add 按钮。选择 org.junit 插件,然后单击 OK。现在将显示类似图 3 所示的编辑器。



图 3. 添加 JUnit 支持后的 Manifest.MF 编辑器
添加 JUnit 支持后的 Manifest.MF 编辑器

接下来,创建一个新软件包和一个名为 ContactPresentationModelTest 的新类,该类用于扩展 TestCase。插入清单 2 中所示的测试方法。



清单 2. 用于 Presentation Model 的测试
                    
public void testYearsMarriedEnablement() {
    Contact contact = new Contact();
    ContactPresentationModel presentationModel = new 
    ContactPresentationModel(
            contact);

    assertFalse(presentationModel.getEnableYearsMarried());

    presentationModel.getContact().setName("Name");
    assertFalse(presentationModel.getEnableYearsMarried());

    presentationModel.getContact().setSpouse("Spouse");
    assertTrue(presentationModel.getEnableYearsMarried());

    presentationModel.getContact().setYearsMarried("5");
    presentationModel.getContact().setSpouse("");
    assertFalse(presentationModel.getEnableYearsMarried());
    assertNull(presentationModel.getContact().getYearsMarried());
}

这段代码不能编译,因为还没有引用的 Presentation Model。在同一个软件包中创建一个名为 ContactPresentationModel 的新类。粘贴清单 3 中的代码。



清单 3. 简短的 Presentation Model 代码
                    
private Contact contact;
private boolean enableYearsMarried;

public ContactPresentationModel(Contact contact) {
	this.contact = contact;
}

public Contact getContact() {
	return contact;
}



public void setContact(Contact contact) {
	this.contact = contact;
}

public boolean getEnableYearsMarried() {
	return this.enableYearsMarried;
}

至此,系统将可编译先前创建的测试。在软件包浏览器中的类上单击鼠标右键,然后从弹出式菜单中选择 Run As > JUnit Test。JUnit 视图应当显示测试失败,如图 4 所示。



图 4. 测试失败后的 JUnit 视图
测试失败后的 JUnit 视图

我们来看看清单 2 用了什么测试方法。前几行设置了一个新的 ContactPresentationModel 并用一个新的 Contact 对象来填充它。由于此对象没有名称或配偶的值,因此此对象在其 enableYearsMarried 变量(通过 getEnableYearMarried() getter 方法来访问)中保存的状态在初始化时应当是 false。然后测试设定了名称属性并断言启用的状态仍是 false。在填充配偶属性后应当会改变启用状态,这段代码中写了一条断言来测试这个条件。然后 yearsMarried 属性被设定,并清空 spouse 属性。清空 spouse 属性应当会导致启用状态转换为 false 并清空 yearsMarried 属性。结果,最后两条断言检查情况是不是这样。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值