精通 Grails: 使用 Grails 进行单元测试(单元测试提速)
2009-11-26 00:00:00 来源:WEB开发网具体来讲,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.
更多精彩
赞助商链接