本教程一直都强调 Groovy 只是 Java 的一个变体。您已经看到可以用 Groovy 编写并使用标准的 Java 程序。为了最后一次证明这点,在结束本教程之前,我们将通过 JUnit 利用 Java 对 Song
类进行单元测试。
将 JUnit 加入 Eclipse 项目
为了跟上本节的示例,需要将 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
显然,需要验证 toString()
方法是否没有问题,那么第一步该做什么呢?如果想的是 “导入 Song
类”,那么想得就太难了 — Song
类在同一个包内,所以第一步是创建它的实例。
在创建用于测试的 Song
实例时,请注意不能通过传给构造函数的映射完全初始化 — 而且,如果想自动完成实例的 setter 方法,可以看到每个 setter 接受的是 Object
而不是 String
(如图 19 所示)。为什么会这样呢?
图 19. 所有的 setter 和 getter
Groovy 的功劳
如果回忆一下,就会记得我在本教程开始的时候说过:
因为 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
始终是普通的 Java
返回来编写测试,另外请注意,默认情况下 Groovy 编译的类属性是私有的,所以不能直接在 Java 中访问它们,必须像下面这样使用 setter:
@Test |
编写这个测试用例余下的代码就是小菜一碟了。测试用例很好地演示了这样一点:用 Groovy 所做的一切都可以轻易地在 Java 程序中重用,反之亦然。用 Java 语言执行的一切 *** 作和编写的一切代码,在 Groovy 中也都可以使用。
总结以上是内存溢出为你收集整理的对 Groovy 进行单元测试全部内容,希望文章能够帮你解决对 Groovy 进行单元测试所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)