Pourquoi cette unité (trivial) Test échoué?
Question
Ceci a été pris presque mot pour mot de Mastering Grails IBM série.
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()
}
}
sortie grails test-app DateTagLib
:
-------------------------------------------------------
Running 1 unit test...
Running test DateTagLibTests...
testThisYear...FAILED
Tests Completed in 359ms ...
-------------------------------------------------------
Tests passed: 0
Tests failed: 1
-------------------------------------------------------
J'ai essayé les types correspondant (int / long / cordes), mais je suis encore frapper ma tête contre le mur.
Ce test échoue aussi:
void testThisYear() {
long expected = Calendar.getInstance().get(Calendar.YEAR)
assertEquals("years do NOT match", expected, (long) dateTagLib.thisYear())
}
La solution
Essayez les options suivantes au lieu
class DateTagLibTests extends TagLibUnitTestCase {
void testThisYear() {
String expected = Calendar.getInstance().get(Calendar.YEAR)
tagLib.thisYear()
assertEquals("years do NOT match", expected, tagLib.out)
}
}
Votre code d'origine a 2 problèmes:
- Vous ne devriez pas instancier
DateTagLib
explicitement. Il est déjà disponible dans une propriété de la classe de testtagLib
nommé -
thisYear
ne retourne pas la valeur de l'année, il écrit àout
. Au sein d'un test, vous pouvez accéder au contenu écrit à la sortie viatagLib.out
Autres conseils
out << Calendar.getInstance().get(Calendar.YEAR)
met le résultat dans out
, si vous voulez tester cette utilisation def thisYear = { Calendar.getInstance().get(Calendar.YEAR) }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow