Comment tester une interface java? [dupliquer]


Cette question a déjà une réponse ici:

J'ai une interface et une classe qui implémente cette interface, et la remplace méthodes:

public interface Intr {
public int method1();
public int method2();
}


public class example implements Intr{
@override
public int method1()
{
//stmts
}
@override
public int method2(){
//stmts
}
} 

Je veux créer un test JUnit pour tester cette interface sans implémenter la classe sur mon test, j'ai utilisé un code comme :

public class TIntr {

    private Intr interface;

    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
    }

    @AfterClass
    public static void tearDownAfterClass() throws Exception {
    }

    @Test
    public Object testMethod1() {
        try{
        int result = interface.method1();
        assertEquals(something, result);
        }catch(Exception e){
        fail("Test Failed!!");
        }


        @Test
    public Object testMethod1() {
        try{
        int result = interface.method2();
        assertEquals(something, result);
        }catch(Exception e){
        fail("Test Failed!!");
        }
}

Mais le test échoue toujours car l'exécution des méthodes génère toujours des valeurs null car je n'ai pas créé d'instance à partir de la classe, seulement une variable de l'interface de type.

Author: Muhammed Refaat, 2013-06-14

1 answers

Essayez d'utiliser le EasyMock. EasyMock crée un objet fictif basé sur l'interface. L'objet mock implémente toutes les méthodes de l'interface et pour les méthodes que vous spécifiez (par exemple avec expect), il "rejoue" le comportement spécifié lorsqu'ils sont appelés.

Cela devrait être quelque chose comme:

Intr mockedDependency = createMock(Intr.class);
expect(mockedDependency.method1()).andReturn(100);

Bien que, je ne vois pas pourquoi testez-vous une interface.

 1
Author: darijan, 2013-06-14 16:00:11