【问题标题】:Why is this (trivial) unit test failing?为什么这个(微不足道的)单元测试失败了?
【发布时间】:2010-02-18 20:17:43
【问题描述】:

这几乎是从 IBM 的 Mastering Grails 系列中逐字记录的。

DateTagLib.groovy:

class DateTagLib {
  def thisYear = {
    out << Calendar.getInstance().get(Calendar.YEAR)
  }
}

DateTagLibTests.groovy:

class DateTagLibTests extends TagLibUnitTestCase {
    def dateTagLib

    protected void setUp() {
        super.setUp()

        dateTagLib = new DateTagLib()
    }

    void testThisYear() {
        String expected = Calendar.getInstance().get(Calendar.YEAR)
        assertEquals("years do NOT match", expected, dateTagLib.thisYear())
    }

    protected void tearDown() {
        super.tearDown()
    }
}

grails test-app DateTagLib 输出:

-------------------------------------------------------
Running 1 unit test...
Running test DateTagLibTests...
                    testThisYear...FAILED
Tests Completed in 359ms ...
-------------------------------------------------------
Tests passed: 0
Tests failed: 1
-------------------------------------------------------

我尝试匹配类型(int/long/String),但我仍然在用头撞墙。

这个测试也失败了:

void testThisYear() {
    long expected = Calendar.getInstance().get(Calendar.YEAR)
    assertEquals("years do NOT match", expected, (long) dateTagLib.thisYear())
}

【问题讨论】:

    标签: java grails groovy junit taglib


    【解决方案1】:

    改用以下方法

    class DateTagLibTests extends TagLibUnitTestCase {
    
        void testThisYear() {
            String expected = Calendar.getInstance().get(Calendar.YEAR)
            tagLib.thisYear()
            assertEquals("years do NOT match", expected, tagLib.out)
        }
    
    }
    

    您的原始代码有两个问题:

    • 您不应显式实例化DateTagLib。它已经可以通过名为tagLib 的测试类的属性获得
    • thisYear 不返回年份值,而是将其写入out。在测试中,您可以通过tagLib.out 访问写入输出的内容

    【讨论】:

    • 没问题,顺便说一句,我不知道你是打算使用这个标签库还是只是为了说明目的,但这对我来说似乎毫无意义。 IMO,使用以下 GSP 代码${new Date()[Calendar.YEAR]} 几乎一样容易
    【解决方案2】:

    out &lt;&lt; Calendar.getInstance().get(Calendar.YEAR)将结果放入out,如果你想测试这个使用def thisYear = { Calendar.getInstance().get(Calendar.YEAR) }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-27
      • 2021-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-25
      • 1970-01-01
      相关资源
      最近更新 更多