2012-01-10 15 views
10

Żadne testy nie są wykonywane, obie klasy są ignorowane. Jak mogę to sprawić? (Spodziewam się, że test1() zostanie wykonany zarówno dla Integer, jak i Double).JUnit dziedziczenie testowe nie działa

Używam JUnit 4.8.1.

Aktualizacja: okazało się, że problem jest związany z wtyczką maven-surefire, a nie z samą JUnit. Zobacz moją odpowiedź poniżej.

+0

Czy chcesz przedłużyć TestCase? –

+0

Czy jest to wymagane nawet w przypadku, gdy używam adnotacji? – agibalov

+2

Junit4 nie wymaga rozszerzenia TestCase, ale jak to działa? Z linii poleceń? Z Eclipse? – jeff

Odpowiedz

12

Zmieniono nazwę wszystkich moich klas, aby mieć przyrostek "Test", a teraz działa (Concrete1Test, Concrete2Test).

Aktualizacja:

Że to związane z ustawieniami domyślnymi maven-surefire-plugin.

http://maven.apache.org/plugins/maven-surefire-plugin/examples/inclusion-exclusion.html

Domyślnie Surefire Plugin automatycznie obejmuje wszystkie zajęcia testowe z następującymi wieloznacznych wzorów:

**/Test*.java - obejmuje wszystkie jego podkatalogów i wszystkie nazwy plików Java, które zaczynają się od „test” . **/*Test.java - zawiera wszystkie swoje podkatalogi i wszystkie nazwy plików Java, które kończą się na "Test". **/*TestCase.java - zawiera wszystkie swoje podkatalogi i wszystkie nazwy plików Java, które kończą się na "TestCase".

+2

Dzieje się tak dlatego, że mavenfire-plugin maven używa do uruchamiania testów "odkrywa" testy oparte na nazwach klas. Muszą pasować do jednej z kilku akceptowanych wzorców, przy czym BlahTest jest jednym z nich. Tutaj jest więcej informacji na temat ustawień domyślnych i jak możesz je dostosować w swojej konfiguracji ... http://maven.apache.org/plugins/maven-surefire-plugin/examples/inclusion-exclusion.html –

+1

Tak, to sprawia, że sens.Domyślne nazwy plików używane przez plugin murfire (maven plugin, który wykonuje, gdy nazywasz 'test mvn') to' **/Test * .java', '**/* Test.java' i' **/* TestCase .java'. Ref: http://maven.apache.org/plugins/maven-surefire-plugin/test-mojo.html#includes – matsev

0

Testowałem to w Eclipse, stosując kod szkielet, i to działało w porządku: klasa

Base:

package stkoverflow; 

import org.junit.Test; 

public abstract class GenericTests<T> { 
    protected abstract T getT(); 

    @Test 
    public void test1() { 
     getT(); 
    }  
} 

Podklasa:

package stkoverflow; 

public class ConcreteTests1 extends GenericTests<Integer> { 

    @Override 
    protected Integer getT() { 
     return null; 
    }  
} 

Running ConcreteTests1 w Eclipse JUnit Runner działał dobrze. Być może problem dotyczy Mavena?

Powiązane problemy