Supposons un extrait de code de test:Existe-t-il un moyen d'avoir quelque chose comme l'argument de message jUnit Assert dans la méthode de vérification de Mockito?
méthodeObservable model = Class.forName(fullyQualifiedMethodName).newInstance();
Observer view = Mockito.mock(Observer.class);
model.addObserver(view);
for (Method method : Class.forName(fullyQualifiedMethodName).getDeclaredMethods())
{
method.invoke(model, composeParams(method));
model.notifyObservers();
Mockito.verify(
view, Mockito.atLeastOnce()
).update(Mockito.<Observable>any(), Mockito.<Object>any());
}
Mockito.verify
lance une exception si une méthode dans un modèle n'a pas invoqué la méthode Observable.setChanged()
. Problème: sans ajouter loggers/System.print.out
Je ne peux pas réaliser quelle est la méthode actuelle qui a échoué le test. Est-il possible d'avoir quelque chose de similaire à jUnit Assert
méthodes:
Assert.assertEquals(
String.format("instances %s, %s should be equal", inst1, inst2),
inst1.getParam(),
inst2.getParam()
);
SOLUTION:
verify(observer, new VerificationMode()
{
@Override
public void verify(VerificationData data)
{
assertTrue(
format(
"method %s doesn't call Observable#setChanged() after changing the state of the model",
method.toString()
),
data.getAllInvocations().size() > 0);
}
}).update(Mockito.<Observable>any(), Mockito.<Object>any());
Passer la cause en second argument est généralement préférable à la concaténation du message. 'throw new MockitoAssertionError (" message ", e)' – Kapep
MockitoAssertionError n'a pas de constructeur avec les paramètres MockitoAssertionError (String, Exception) J'utilise 'new AssertionError (" message ", exception)' à la place car c'est le type d'exception est jeté par JUnit pour les assertions. –