技术开发 频道

精通 Grails: 用 Groovy 服务器页面(GSP)改变视图

  测试 TagLibs

  即使现在看起来一切正常,还是应该编写一个测试,确保这个标记日后不会出错。Working Effectively with Legacy Code 的作者 Michael Feathers 说过,任何没有测试的代码都是遗留代码。为了防止 Feathers 先生大发雷霆,请将清单 9 的代码添加到 DateTagLibTests.groovy:

  清单 9.自定义标记的测试

class DateTagLibTests extends GroovyTestCase {
  def dateTagLib

  void setUp(){
    dateTagLib
= new DateTagLib()
  }

  void testThisYear() {
    
String expected = Calendar.getInstance().get(Calendar.YEAR)
    assertEquals(
"the years don't match", expected, dateTagLib.thisYear())
  }
}

  GroovyTestCase 是在 JUnit 3.x TestCase 之上一层薄薄的 Groovy 层。为只有一行代码的标记编写测试看起来似乎有些过分,但是很多时候问题的源头正是这一行代码。编写测试并不难,而且保证安全要比说抱歉更好。请输入 grails test-app 运行测试。如果一切正常,应该看到如清单 10 所示的信息:

  清单 10.在 Grails 中通过测试

-------------------------------------------------------
Running
2 Integration Tests...
Running test DateTagLibTests...
                    testThisYear...SUCCESS
Running test TripTests...
                    testSomething...SUCCESS
Integration Tests Completed in 506ms
-------------------------------------------------------

  如果 TripTests 的样子让您感到惊讶,请不要担心。在输入 grails create-domain-class Trip 时,将会为您生成一个测试。实际上,每个 Grails create 命令都会生成对应的测试。确实,测试在现代软件开发中如此 之重要。如果以前没有编写测试的习惯,那么 Grails 将优雅地将您带到正确的方向上来,您肯定不会后悔。

  grails test-app 命令除了运行测试之外,还会创建很好的 HTML 报告。请在浏览器中打开 test/reports/html/index.html,查看标准的 JUnit 测试报告,如图 1 所示。

  图 1.单元测试报告  

  编写并测试过简单的自定义标记之后,现在要构建一个略微复杂一些的标记。

0
相关文章