11
votes

Problème de dépendance JMOCK

J'essaie de traverser mon tout premier tutoriel JMock http://www.jmock.org /getting-started.html , et ce n'est pas bien allé.

Le problème que j'ai rencontré est ci-dessous: xxx

J'ai trouvé une solution sur Internet. S'il vous plaît voir ci-dessous:

la solution consiste à garantir que toutes les dépendances sur les pots JMock se produisent Avant les dépendances sur Junit dans chaque plug-in. De cette façon, Hamcrest est Chargé de JMock, pas de Junit.

Ma compréhension de la solution est la suivante: Faire la classe de test Utilisez le bocal de Hamcrest de JMock au lieu de celui de Junit? Ai-je raison? Que dois-je faire dans Eclipse pour y arriver?

Merci,

Sarah


0 commentaires

5 Réponses :


2
votes

Vous pouvez utiliser Junit- dep .jar (plutôt que Junit.jar) qui n'inclut pas les types de hache-tête. Ensuite, les références de Hamcrest à JMock ne s'affrontent pas.


0 commentaires

2
votes
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit-dep</artifactId>
        <version>4.8.2</version>
        <exclusions>
            <exclusion>
                <groupId>org.hamcrest</groupId>
                <artifactId>hamcrest-core</artifactId>
            </exclusion>
        </exclusions>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest-all</artifactId>
        <version>1.3.0RC2</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.jmock</groupId>
        <artifactId>jmock</artifactId>
        <version>2.6.0-RC2</version>
        <exclusions>
            <exclusion>
                <groupId>org.hamcrest</groupId>
                <artifactId>hamcrest-core</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.hamcrest</groupId>
                <artifactId>hamcrest-library</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.hamcrest</groupId>
                <artifactId>hamcrest-unit-test</artifactId>
            </exclusion>
        </exclusions>
        <scope>test</scope>
    </dependency>
    <!-- next libs are optional -->
    <dependency>
        <groupId>org.jmock</groupId>
        <artifactId>jmock-junit3</artifactId>
        <version>2.6.0-RC2</version>
        <exclusions>
            <exclusion>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
            </exclusion>
        </exclusions>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.jmock</groupId>
        <artifactId>jmock-legacy</artifactId>
        <version>2.6.0-RC2</version>
        <scope>test</scope>
    </dependency>

1 commentaires

J'ai essayé de modifier cela, mais je devais seulement changer quelques lettres, alors ne me laisserait pas me laisser. Assurez-vous de modifier la version de HamCrest de 1.3.0-RC2 en 1.3, car c'est la dernière version disponible la plus récente.



8
votes

Les bibliothèques L'ordre dans la configuration de la construction Eclipse sont les suivants:

Hamcrest-core-1.2.jar Hamcrest-bibliothèque-1.2.jar jmock-2.5.1.jar Jre [Javase-1.6] Junit_4.8.1.jar (partie de la distribution Eclipse) hamcrest.core_1.1.0 (groupé avec JUnit 4.8.1)

La solution est simple - assurez-vous que HamCrest.jar est avant la bibliothèque Junit incluse par Eclipse dans la classe de classe.

Je crois que si vous regardez l'onglet "Ordre and Export" dans la propriété Java Build Chemin (configurez le chemin de construction), vous constaterez que le JAR JUNIT est au-dessus du hamcrest.jar. Vous pouvez déplacer Hamcrest au-dessus du junit Jaire ici et le problème disparaîtra.


0 commentaires

2
votes

Cela m'est arrivé en raison de la double dépendance junit sur le projet. On ajouté par Eclipse et une des dépendances Maven (M2eclipse / M2e ajoute celui-ci à la classe de classe aussi).

Alors, supprimez celui-ci ajouté par Eclipse au projet en allant au projet> Propriétés> Piste de construction

Voir ci-dessous. Entrez la description de l'image ici


0 commentaires

0
votes

Je viens de courir dans le même problème à essayer d'exécuter les tests dans un projet non éclipse que je venais d'importer. Après avoir regardé les autres réponses ici, j'ai remarqué que le pom.xml spécifié Junit 3 .

donc j'ai simplement changé "junit_container / 4" à "junit_container / 3" dans .ClassPath ... et tous les tests ont réussi.


0 commentaires