sobota 22. októbra 2011

Maven 2, junit4 a spúšťanie testov

Riešil som problém so spúšťaním (resp. nespúšťaním) JUnit4 testov počas maven buildu. Konkrétne bolo záhadné, že Eclipse v "Run as..." menu ponúka JUnit test, zatiaľ čo ten istý projekt po
maven test
daný test preskočí.

Hmm.

Maven definuje, že ku všetkému v src/test/java/** bude pristupovať ako k potenciálnemu testu. JUnit4 definuje že testovaná metóda bude označená anotáciou @Test.

To je teória.

V praxi je to tak, že v mavenovi sa o spúšťanie testov stará Surefire plugin ktorý až po verziu 2.7 na toto čiastočne kašle, takže síce pozerá anotáciu @Test ale už ignoruje že všetko v src/test/java/** je potenciálny JUnit4 test a pozerá sa pri hľadaní testov na 3 patterny známe v JUnit3: "**/Test*.java", "**/*Test.java" a "**/*TestCase.java".

Ako z toho von?
Treba upgradnúť surefire (možno nejako centrálne pomocov nadradeného parent-pom), alebo nazvať testovaný objekt podla JUnit3 patternu (napr. prípona *Test.java)