Grails 支持两种基本的测试类型:单元测试和集成测试。两种测试的语法完全相同:都被使用相同的断言编写为一个 GroovyTestCase。它们之间的区别在于语义上。单元测试用于在隔离环境下测试类,而集成测试支持在完整的、正在运行的环境中测试类。该文章是根据当时最新的 Grails 1.0 版本编写的,在该版本中,测试基础架构的功能得到了显著改进。GrailsUnitTestCase 类及其子类的引入将流程测试的简单性和全面性提升到了一个全新的水平。具体来讲,这些新测试类的模拟功能提升了单元测试的速度,同时能够像在集成测试中一样正常测试功能。图 1 展示了 Grails 1.1.x 中全新的测试层次结构:
1 | grails create-app testing |
1 | grails create-domain-class User |
1 | grails create-controller User |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | class User { String name String login String password String role = "user" static constraints = { name(blank:false) login(unique:true, blank:false) password(password:true, minSize:5) role(inList:["user", "admin"]) } String toString(){ "${name} (${role})" } } |
1 2 3 | class UserController { def scaffold = true } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | import grails.test.* class UserTests extends GrailsUnitTestCase { protected void setUp() { super.setUp() } protected void tearDown() { super.tearDown() } void testSomething() { } } |
1 2 3 4 | void testBlank() { def user = new User() assertFalse user.validate() } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | $ 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. |
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |