为什么是这样(简单)单元的测试失败?
题
这是采取了几乎逐字从IBM的 掌握技术发展的看法 系列。
DateTagLib.时髦:
class DateTagLib {
def thisYear = {
out << Calendar.getInstance().get(Calendar.YEAR)
}
}
DateTagLibTests.时髦:
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/长/String),但我仍然敲打我的头撞在墙上。
这测试还有失败:
void testThisYear() {
long expected = Calendar.getInstance().get(Calendar.YEAR)
assertEquals("years do NOT match", expected, (long) dateTagLib.thisYear())
}
解决方案
试试下面的而不是
class DateTagLibTests extends TagLibUnitTestCase {
void testThisYear() {
String expected = Calendar.getInstance().get(Calendar.YEAR)
tagLib.thisYear()
assertEquals("years do NOT match", expected, tagLib.out)
}
}
你的原始代码中有2个问题:
- 你不应该的实例
DateTagLib
明确。它已经通过一个性测试类命名的tagLib
thisYear
不返回的年度价值,它写到out
.在测试你可以访问的内容写入输出的通过tagLib.out
其他提示
out << Calendar.getInstance().get(Calendar.YEAR)
并将结果置于out
,如果你要测试的这款使用def thisYear = { Calendar.getInstance().get(Calendar.YEAR) }
不隶属于 StackOverflow