2009-06-09 7 views
1

J'expérimentais jMock en tant que cadre moqueur pour mon projet. Je suis arrivé dans une situation où je dois me moquer à la fois d'une classe et d'une interface. J'ai utilisé le ClassImposteriser.INSTANCE pour lancer l'imposteur du contexte. En supposant une classe Validator et une interface Person pour simulerjMock Mocking Classes et Interface

Quand j'allais me moquer de l'interface Person, j'ai couru vers un problème NoClassFoundDefError. Quand je me suis moqué de la classe Validator, il n'y avait pas de problème.

J'ai besoin à la fois de cette classe et de cette interface mais je ne peux pas résoudre le problème. S'il vous plaît HELP.

Exemple de code:

Moquerie

private Mockery context = new JUnit4Mockery() {{ setImposteriser(ClassImposteriser.Class) }};

Classe:

private Validator validator;

Interface:

private Person person;

Méthode d'essai intérieur

validator = context.Mock(Validator.class); ----> Travailler

person = context.Mock(Person.class); ---->NoClassFoundDefError

+0

Veuillez ajouter des exemples de code pour clarifier votre question. Peut-être que je peux vous aider .. – jrharshath

Répondre

6

Le code que vous le présentez ne compilera pas (il devrait être ClassImposteriser.INSTANCE). L'exemple de code ci-dessous semble fonctionner correctement. Peut-être pourriez-vous fournir plus de détails?

public class Example { 
    private Mockery context = new JUnit4Mockery() { 
    { 
     setImposteriser(ClassImposteriser.INSTANCE); 
    } 
    }; 

    @Test 
    public void testStuff() { 
    Validator validator = context.mock(Validator.class); 
    Person person = context.mock(Person.class); 

    // do some stuff... 
    } 

    public static interface Person { 
    } 

    public static class Validator { 
    } 
}