本教程一直都强调 Groovy 只是 Java 的一个变体。您已经看到可以用 Groovy 编写并使用标准的 Java 程序。为了最后一次证明这点,在结束本教程之前,我们将通过 JUnit 利用 Java 对 Song 类进行单元测试。
为了跟上本节的示例,需要将 JUnit 加入到 Eclipse 项目中。首先,右键单击项目,选择 Build Path,然后选择 Add Libraries,如图 14 所示:
图 14. 将 JUnit 加入到项目的构建路径

会出现 Add Library 对话框,如图 15 所示。
图 15. 从库列表中选择 JUnit

选择 JUnit 并单击 Next 按钮。应该会看到如图 16 所示的对话框。选择 JUnit3 或 4 — 具体选择哪项全凭自己决定 — 并单击 Finish 按钮。
图 16. 选择 JUnit 3 或 JUnit 4

|
|
|
|
现在在项目的类路径中加入了 JUnit,所以能够编写 JUnit 测试了。请右键单击 java 源文件夹,选择 New,然后选择 JUnit Test Case。定义一个包,给测试用例命名(例如 SongTest),在 Class Under Test 部分,单击 Browse 按钮。
请注意,可以选择用 Groovy 定义的 Song 类。图 17 演示了这一步骤:
图 17.找到 Song 类

选择该类并单击 OK(应该会看到与图 18 类似的对话框)并在 New JUnit Test Case 对话框中单击 Finish 按钮。
图 18. Song 的新测试用例

|
|
|
|
我选择使用 JUnit 4;所以我定义了一个名为 testToString() 的测试方法,如下所示:
package org.acme.groovy; |
|
|
|
|
显然,需要验证 toString() 方法是否没有问题,那么第一步该做什么呢?如果想的是 “导入 Song 类”,那么想得就太难了 —
Song 类在同一个包内,所以第一步是创建它的实例。
在创建用于测试的 Song 实例时,请注意不能通过传给构造函数的映射完全初始化 — 而且,如果想自动完成实例的 setter 方法,可以看到每个 setter 接受的是 Object 而不是 String(如图 19 所示)。为什么会这样呢?
图 19. 所有的 setter 和 getter

|
|
|
|
如果回忆一下,就会记得我在本教程开始的时候说过:
因为 Java 中的每个对象都扩展自java.lang.Object,所以即使在最坏情况下,Groovy 不能确定变量的类型,Groovy 也能将变量的类型设为Object然后问题就会迎刃而解。
现在回想一下,在定义 Song 类时,省略了每个属性的类型。Groovy 将自然地将每个属性的类型设为 Object。所以,在标准 Java 代码中使用 Song 类时,看到的 getter 和 setter 的参数类型和返回类型全都是 Object。
|
|
|
|
为了增添乐趣,请打开 Groovy Song 类,将 artist 属性改为 String 类型,而不是无类型,如下所示:
package org.acme.groovy |
现在,回到 JUnit 测试,在 Song 实例上使用自动完成功能 — 看到了什么?
在图 20 中(以及您自己的代码中,如果一直跟随本教程的话),setArtist() 方法接受一个 String,而不是
Object。Groovy 再次证明了它就是 Java,而且应用了相同的规则。
图 20. String,而不是 object

|
|
|
|
返回来编写测试,另外请注意,默认情况下 Groovy 编译的类属性是私有的,所以不能直接在 Java 中访问它们,必须像下面这样使用 setter:
@Test |
编写这个测试用例余下的代码就是小菜一碟了。测试用例很好地演示了这样一点:用 Groovy 所做的一切都可以轻易地在 Java 程序中重用,反之亦然。用 Java 语言执行的一切操作和编写的一切代码,在 Groovy 中也都可以使用。
本文介绍如何在Eclipse中引入JUnit,并使用它来进行Groovy编写的Song类的单元测试。通过示例展示了Groovy类在Java项目中的无缝集成及测试方法。
2848

被折叠的 条评论
为什么被折叠?



