Vérifier que la méthode void n’a pas été appelée avec EasyMock

Est-ce possible? J’ai essayé avec EasyMock.expectLastCall().times(0); mais EasyMock se plaint que les temps doivent être> = 1

Vous pouvez utiliser .andThrow(new AssertionFailedError()).anyTimes(); – Il s’agit de la même exception que Assert.fail() , mais elle est moins détaillée que celle de Answer .

avec easymock 3.0, vous devez append un .anyTimes () sur le expectLastCall ou le test échouera:

 Expectation failure on verify: myMethod(): expected: 1, actual: 0` 

sur la base de l’exemple nkr1pt:

 expectLastCall().andAnswer(new IAnswer() { public Object answer() { Assert.assertFail(); return null; } }).anyTimes(); 

Le fait SsortingctMock méthode ne soit appelée est contrôlé par Mock ou SsortingctMock . Ils lèveront une exception lorsque cette méthode non enregistrée est appelée. Ce problème se produit uniquement lors de l’utilisation de NiceMock , où les valeurs par défaut sont renvoyées lors de l’appel de méthodes non enregistrées.

Donc, une solution peut être de ne pas utiliser NiceMock .

Ça ressemble à un insecte pour moi. La classe interne Range ne permet pas de définir un maximum inférieur à 1.

Ne pourriez-vous pas vous moquer de cette méthode et simplement appeler Assert.fail() ?

Si vous vous attendez à ce que votre méthode ne soit pas appelée, ne l’enregistrez pas. Mais je conviens que ça ne marchera pas avec une belle maquette.

J’ai réussi à trouver une solution:

 expectLastCall().andAnswer(new IAnswer() { public Object answer() { Assert.assertFail(); return null; } });