WEB开发网
开发学院软件开发Java 精通 Grails: 使用 Grails 进行单元测试(单元测试... 阅读

精通 Grails: 使用 Grails 进行单元测试(单元测试提速)

 2009-11-26 00:00:00 来源:WEB开发网   
核心提示: 具体来讲,GrailsUnitTestCase 提供了以下模拟方法: mockForConstraintsTests()mockDomain()mockLogging()要理解这些模拟方法有何用途,精通 Grails: 使用 Grails 进行单元测试(单元测试提速)(3),首先创建一个会失败的

具体来讲,GrailsUnitTestCase 提供了以下模拟方法:

mockForConstraintsTests()

mockDomain()

mockLogging()

要理解这些模拟方法有何用途,首先创建一个会失败的测试。将 testSomething() 方法更改为 testBlank() 方法,如清单 4 所示:


清单 4. 一个将会失败的测试
void testBlank() { 
 def user = new User() 
 assertFalse user.validate() 
} 

您可能会问这个测试为什么会失败,毕竟它的语法是正确的。答案是您现在运行的是单元测试。单元测试意味着在隔离环境中运行,所以不会运行数据库和 Web 服务器,最重要的是不会发生与 Grails 相关的元编程。

回头看一下 清单 1 中 User 域类的源代码,很明显其中没有定义任何 validate() 方法。此方法(以及 save()、list()、hasErrors() 和您熟悉的所有其他 Groovy Object Relational Mapping (GORM) 方法)都会被 Grails 在运行时动态添加到域类中。

要运行这个将会失败的测试,在命令提示符处键入 grails test-app。您应该看到清单 5 所示的结果:


清单 5. 控制台输出中显示的失败测试
$ grails test-app 
Environment set to test 
 
Starting unit tests ... 
Running tests of type 'unit' 
------------------------------------------------------- 
Running 2 unit tests... 
Running test UserControllerTests...PASSED 
Running test UserTests... 
          testBlank...FAILED 
Tests Completed in 1434ms ... 
------------------------------------------------------- 
Tests passed: 1 
Tests failed: 1 
------------------------------------------------------- 
 
Starting integration tests ... 
Running tests of type 'integration' 
No tests found in test/integration to execute ... 
 
Tests FAILED - view reports in /testing/test/reports. 

上一页  1 2 3 4 5 6 7 8  下一页

Tags:精通 Grails 使用

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接