Pro testování používám jUnit a mojí oblíbenou knihovnu hamcrest. Hamcrest je již nějakou dobu součástí jUnit - takže člověk si může vybrat používat pouze jUnit včetně hamcrestu (core) a nebo jUnit a k tomu si dotáhnout celý hamcrest (all).
Já jsem zvolil druhou variantu a dlouho jsem řešil ten problém, že se mi špatně vypisovala chyba assertu. Vždy když nějaká podmínka nebyla splněna, tak se mi zobrazila tato chyba:
java.lang.NoSuchMethodError: org.hamcrest.Matcher.describeMismatch(Ljava/lang/Object;Lorg/hamcrest/DescriptionV
Zjistil jsem, že řešení je jednoduché - je jen potřeba mít správné pořadí závislostí v pom.xml. Nejdříve mít referenci na hamcrest-all a pak teprve na jUnit.
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-all</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.4</version>
<exclusions>
<exclusion>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>xmlunit</groupId>
<artifactId>xmlunit</artifactId>
<version>1.3</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>2.5.6</version>
<exclusions>
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>1.8.2</version>
<exclusions>
<exclusion>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
</exclusion>
</exclusions>
</dependency>
Odkaz na relevantní blogy:
3 komentáře:
Neni to nahodou kvuli tomu, ze je v junit harmcrest-core v exclusions listu??? Protoze tohle slysim poprve..
Hamcrest-core je v exclusions listu, protože nechci, aby se mi tranzitivně dotahoval hamcrest díky jUnit. Takže to bych neměnil...
Okomentovat