精通 Grails排除 bug,构建可执行文档
2008-11-06 09:25
218 查看
Grails 可以轻松确保您的应用程序从始至终都远离 bug。这还有另一个好处,您可以利用测试代码生成一组通常是最新的可执行文档。本月
Grails 专家 Scott Davis 向您展示如何对 Grails 进行测试。
我是测试驱动开发(test-driven development,TDD)的大力支持者。Neal Ford(The Productive
Programmer 的作者)说道 “不测试所编写的代码就是失职”。Michael Feathers(Working Effectively
with Legacy Code 的作者)将 “遗留代码” 定义为没有经过相应测试的任何软件 —
这表明编写代码而不进行测试是一种过时的实践。我常说每编写一定数量的生产代码,就要编写两倍的测试代码。
精通 Grails 尚未讨论 TDD,因为到目前为止,这个系列主要关注如何利用 Grails
的核心功能。测试基础设施代码(不用您编写的代码)有一定的价值,但我很少这样做。我相信 Grails 能够正确地将我的 POGO 呈现为 XML,或在我调用
保存到数据库。当您检查自己编写的代码时,测试的真正价值就体现出来了。如果您编写一个复杂的算法,您应该有一个或多个补充单元测试,确保该算法正常工作。在本文,您将看到
Grails 如何帮助和鼓励您进行应用程序测试。
编写第一个测试
在开始测试之前,我将介绍一个新的域类。这个类的一些定制功能必须经过测试才能进入到生产中。输入
清单 1. 创建
从清单 1 可以看到,Grails 在 grails-app/domain 目录中为您创建了一个空的域类。它还在 test/integration
目录中创建了一个带有空的
类(稍后我将进一步讲述单元测试和集成测试的区别)。清单 2 展示了一个带有生成的测试的空
清单 2. 带有生成的测试的空类
是如何工作的。对于这两种情况,您通过断言代码正常工作来测试它们。JUnit 有各种不同的断言方法,包括
等等。它使您通过编程的方式表明 “我断言这个代码按照预期工作”。
将清单 3 中的代码添加到 grails-app/domain/HotelStay.groovy 和
test/integration/HotelStayTests.groovy:
清单 3.
一个简单的测试
本文转自IBM Developerworks中国
请点击此处查看全文
Grails 专家 Scott Davis 向您展示如何对 Grails 进行测试。
我是测试驱动开发(test-driven development,TDD)的大力支持者。Neal Ford(The Productive
Programmer 的作者)说道 “不测试所编写的代码就是失职”。Michael Feathers(Working Effectively
with Legacy Code 的作者)将 “遗留代码” 定义为没有经过相应测试的任何软件 —
这表明编写代码而不进行测试是一种过时的实践。我常说每编写一定数量的生产代码,就要编写两倍的测试代码。
精通 Grails 尚未讨论 TDD,因为到目前为止,这个系列主要关注如何利用 Grails
的核心功能。测试基础设施代码(不用您编写的代码)有一定的价值,但我很少这样做。我相信 Grails 能够正确地将我的 POGO 呈现为 XML,或在我调用
trip.save()时将我的
Trip
保存到数据库。当您检查自己编写的代码时,测试的真正价值就体现出来了。如果您编写一个复杂的算法,您应该有一个或多个补充单元测试,确保该算法正常工作。在本文,您将看到
Grails 如何帮助和鼓励您进行应用程序测试。
编写第一个测试
在开始测试之前,我将介绍一个新的域类。这个类的一些定制功能必须经过测试才能进入到生产中。输入
grails create-domain-class HotelStay,如清单 1 所示:
|
HotelStay类
$ grails create-domain-class HotelStay Environment set to development [copy] Copying 1 file to /src/trip-planner2/grails-app/domain Created Domain Class for HotelStay [copy] Copying 1 file to /src/trip-planner2/test/integration Created Tests for HotelStay |
目录中创建了一个带有空的
testSomething()方法的
GroovyTestCase
类(稍后我将进一步讲述单元测试和集成测试的区别)。清单 2 展示了一个带有生成的测试的空
HotelStay类:
清单 2. 带有生成的测试的空类
class HotelStay { } class HotelStayTests extends GroovyTestCase { void testSomething() { } } |
GroovyTestCase是在 JUnit 3.x 单元测试之上的一层 Groovy。如果您熟悉 JUnit
TestCase,您肯定知道
GroovyTestCase
是如何工作的。对于这两种情况,您通过断言代码正常工作来测试它们。JUnit 有各种不同的断言方法,包括
assertEquals、
assertTrue和
assertNull
等等。它使您通过编程的方式表明 “我断言这个代码按照预期工作”。
|
test/integration/HotelStayTests.groovy:
清单 3.
一个简单的测试
本文转自IBM Developerworks中国
请点击此处查看全文
相关文章推荐
- 精通 Grails: 构建您的第一个 Grails 应用程序
- 精通 Grails: 构建您的第一个 Grails 应用程序
- 精通 Grails: 构建您的第一个 Grails 应用程序(转自developmentwork 中国)
- 精通 Grails: 构建您的第一个 Grails 应用程序(转自developmentwork 中国)
- 精通 Grails(一): 构建您的第一个 Grails 应用程序
- 精通 Grails: 构建您的第一个 Grails 应用程序
- Robomongo bug:执行aggregate最多只返回50个文档
- 使用rebar构建工程、执行单元测试、自动生成项目文档
- Gradle构建可执行Jar包(转载请注明出处)
- 创建可编辑的xml文档(之五)执行中的treeview 控件
- Grails 入门: 构建您的第一个 Grails 应用程序
- Grails 入门: 构建您的第一个 Grails 应用程序
- spring boot maven构建及可执行jar包导出
- [置顶] 面向移动平台的可信执行环境构建方法与应用研究
- 有关Lucene的问题(8):用Lucene构建实时索引的文档更新问题
- Maven如何构建可执行的jar包(包含依赖jar包)
- bug笔记之——自执行函数与分号
- Intellij IDEA 13 利用Grails开发框架构建Java web项目
- Python搞定爬取表映射文档翻译成执行语句(DB2)