对 Groovy 进行单元测试

对 Groovy 进行单元测试,第1张

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

本教程一直都强调 Groovy 只是 Java 的一个变体。您已经看到可以用 Groovy 编写并使用标准的 Java 程序。为了最后一次证明这点,在结束本教程之前,我们将通过 JUnit 利用 JavaSong 类进行单元测试。

将 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;

import org.junit.Test;

public class SongTest {

@Test
public voID testToString(){}

}








测试 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

class Song {
def name
String artist
def genre

String toString(){
"${name},${artist},${getGenre()}"
}

def getGenre(){
genre?.toupperCase()
}
}

现在,回到 JUnit 测试,在 Song 实例上使用自动完成功能 — 看到了什么?

在图 20 中(以及您自己的代码中,如果一直跟随本教程的话),setArtist() 方法接受一个 String而不是 Object。Groovy 再次证明了它就是 Java,而且应用了相同的规则。


图 20. String,而不是 object








始终是普通的 Java

返回来编写测试,另外请注意,默认情况下 Groovy 编译的类属性是私有的,所以不能直接在 Java 中访问它们,必须像下面这样使用 setter:

@Test
public voID testToString(){
Song sng = new Song();
sng.setArtist("Village People");
sng.setname("Y.M.C.A");
sng.setGenre("disco");

Assert.assertEquals("Y.M.C.A,Village People,disCO",
sng.toString());
}

编写这个测试用例余下的代码就是小菜一碟了。测试用例很好地演示了这样一点:用 Groovy 所做的一切都可以轻易地在 Java 程序中重用,反之亦然。用 Java 语言执行的一切 *** 作和编写的一切代码,在 Groovy 中也都可以使用。

总结

以上是内存溢出为你收集整理的对 Groovy 进行单元测试全部内容,希望文章能够帮你解决对 Groovy 进行单元测试所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1267565.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存