0

I'm using JUnit 4.11 to run integration tests on my SpringBoot application. I have the following test case :

    @Test
public void testClassementMarcheActeTranche() throws IOException, PlanDeClassementException {
    NodeRef nodeRefRepertoireSasGda = servicePlanDeClassementMarche.getSpace(SpaceUtil.SAS_GED_MARCHE.name());
    NodeRef nodeRefPiece = setUpCreateActe(nodeRefRepertoireSasGda, "1 (Tranche 1 Marché 2019-19M0059001) (Tranche 1 Marché 2019-19M58785858)", "Courrier de reconduction");
    classementDocumentsActionJobExecuter.executeImpl(null, nodeRefPiece);
    String siteName = serviceRegistry.getSiteService().getSite(nodeRefPiece).getShortName();
    QName typePiece = serviceRegistry.getNodeService().getType(nodeRefPiece);
    assertThat(typePiece, equalTo(TYPE_PIECE.getQName()));
    NodeRef parentFolder = serviceRegistry.getNodeService().getPrimaryParent(nodeRefPiece).getParentRef();
    String parentFolderName = serviceRegistry.getFileFolderService().getFileInfo(parentFolder).getName();
    NodeRef marcheFolder =  serviceRegistry.getNodeService().getPrimaryParent(parentFolder).getParentRef();
    QName typeMarche = serviceRegistry.getNodeService().getType(marcheFolder);
    assertThat(typeMarche, equalTo(TYPE_MARCHE.getQName()));
    String marcheFolderName = serviceRegistry.getFileFolderService().getFileInfo(marcheFolder).getName();
    NodeRef millesimeFolder =  serviceRegistry.getNodeService().getPrimaryParent(marcheFolder).getParentRef();
    String millesimeFolderName = serviceRegistry.getFileFolderService().getFileInfo(millesimeFolder).getName();
    NodeRef cdrFolder =  serviceRegistry.getNodeService().getPrimaryParent(millesimeFolder).getParentRef();
    String cdrFolderName = serviceRegistry.getFileFolderService().getFileInfo(cdrFolder).getName();

    String numeroMarche = (String)nodeService.getProperty(nodeRefPiece, PROP_NUMERO_DU_MARCHE.getQName());
    String dateModificationnMarche = nodeService.getProperty(nodeRefPiece, PROP_DATE_DE_NOTIFICATION_DU_MARCHE.getQName()).toString();
    String categorieMarche = (String)nodeService.getProperty(nodeRefPiece, PROP_CATEGORIE_DU_MARCHE.getQName());
    String etatMarche = (String)nodeService.getProperty(nodeRefPiece, PROP_ETAT_DU_MARCHE.getQName());
    List<String> codeTitulaire = (ArrayList<String>)nodeService.getProperty(nodeRefPiece, PROP_CODE_TITULAIRE.getQName());
    List<String> titulaireMarche = (ArrayList<String>)nodeService.getProperty(nodeRefPiece, PROP_NOM_TITULAIRE.getQName());
    List<String> codeSousTraitant = (ArrayList<String>)nodeService.getProperty(nodeRefPiece, PROP_CODE_SOUS_TRAITANTS.getQName());
    List<String> nomSousTraitant = (ArrayList<String>)nodeService.getProperty(nodeRefPiece, PROP_NOM_SOUS_TRAITANTS.getQName());
    String typeDeProcedureMarche = (String)nodeService.getProperty(nodeRefPiece, PROP_TYPE_DE_PROCEDURE.getQName());
    String objetMarche = (String)nodeService.getProperty(nodeRefPiece, PROP_OBJET_DU_MARCHE.getQName());
    List<String> axe = (ArrayList<String>)nodeService.getProperty(marcheFolder, PROP_AXE_OPERATION_ORYSON_MARCHE.getQName());
    List<String> libEtablissement = (ArrayList<String>)nodeService.getProperty(marcheFolder, PROP_LIBELLE_ETABLISSEMENT_ENSEIGNEMENT_MARCHE.getQName());
    List<String> codeEtablissement = (ArrayList<String>)nodeService.getProperty(marcheFolder, PROP_CODE_ETABLISSEMENT_ENSEIGNEMENT_MARCHE.getQName());
    List<String> cdrMarche = (ArrayList<String>)nodeService.getProperty(marcheFolder, PROP_CDR_MARCHE.getQName());

    assertThat(marcheFolderName, equalTo("2019-19M58785858 - Lot 1 - Chantier des collections");


    nodeService.deleteNode(marcheFolder);
}

And the following error message :

java.lang.NoSuchMethodError: org.hamcrest.Matcher.describeMismatch(Ljava/lang/Object;Lorg/hamcrest/Description;)V

at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:18)
at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:8)
at fr.package.alfresco.marche.actions.ClassementActeActionJobIT.testClassementMarcheActeTranche(ClassementActeActionJobIT.java:203)

I have followed the answers in this question : Getting "NoSuchMethodError: org.hamcrest.Matcher.describeMismatch" when running test in IntelliJ 10.5 So I ended up having this pom file :

<dependencies>

    <dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest-core</artifactId>
        <version>1.3</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest-library</artifactId>
        <version>1.3</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
        <exclusions>
            <exclusion>
                <artifactId>hamcrest-core</artifactId>
                <groupId>org.hamcrest</groupId>
            </exclusion>
        </exclusions>
        <version>1.9.5</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <exclusions>
            <exclusion>
                <artifactId>hamcrest-core</artifactId>
                <groupId>org.hamcrest</groupId>
            </exclusion>
        </exclusions>
        <version>4.11</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.jdbi</groupId>
        <artifactId>jdbi</artifactId>
        <version>2.78</version>
    </dependency>
</dependencies>

Although this haven't fixed the problem, anyone has an idea of how this persisting problem would be fixed ?

Konstantin Annikov
  • 11,655
  • 4
  • 27
  • 40
Amine Özil
  • 75
  • 10
  • If you are using Spring Boot ditch all the test dependencies (unit, mockito, ham crest) and include **only** `spring-boot-starter-test` with a scope of `test`... Then re-run. – M. Deinum Jul 05 '22 at 07:52
  • I have tried that but I have got the same problem... – Amine Özil Jul 05 '22 at 12:21
  • I doubt that. Unless there is an ham crest dependency being pulled in somewhere else, however as you only added a snippet of your pom that is impossible to determine. If you removed all test related dependencies (unit, mockito, ham crest) and only included `spring-boot-starter-test` there should be no conflicting dependencies. If there are something else is pulling that dependency in. Also instead of Hamcrest I would suggest the AssertJ library instead. – M. Deinum Jul 05 '22 at 17:29

0 Answers0