[英]Why is this (trivial) unit test failing?
這幾乎完全來自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())
}
嘗試以下方法
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) }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.