2008-10-10 5 views
5

Ich habe einige Komponententests gemacht (in der Testklasse). Das Tutorial, das ich gelesen habe, sagte, dass ich eine TestSuite für die Unittests machen sollte.JUnit und junit.framework.TestSuite - Keine ausführbaren Methoden

Odd ist, dass, wenn ich den Komponententest direkt ausführen (Auswahl der Testklasse - Run als jUnit Test) alles funktioniert gut, obwohl wenn ich das gleiche mit der Testsuite versuche, gibt es immer eine Ausnahme: java.lang.Exception: Keine ausführbaren Methoden. Hier

ist der Code der Testsuite:

import junit.framework.Test; 
import junit.framework.TestSuite; 

public class AllTests { 

public static Test suite() { 
    TestSuite suite = new TestSuite("Test suite for com.xxx.yyyy.test"); 
    //$JUnit-BEGIN$ 
    suite.addTestSuite(TestCase.class); 
    //$JUnit-END$ 
    return suite; 
    } 

} 

Irgendwelche Ideen, warum dies nicht funktioniert?

Antwort

5

Ich habe keine Erfahrung in Ameisen - also verwende ich es nicht zum Testen es gerade jetzt.

Bei der Suche im Internet scheint es, als würde ich das alte Verhalten von jUnit 3.8 und jUnit 4.0 durcheinanderbringen. Der Versuch, jetzt eine Möglichkeit, die "neues Verhalten" zu verwenden

bearbeitet:
jetzt funktioniert es:

AllTest geändert:

import org.junit.runner.RunWith; 
import org.junit.runners.Suite; 
import org.junit.runners.Suite.SuiteClasses; 


@RunWith(value=Suite.class) 
@SuiteClasses(value={TestCase.class}) 
public class AllTests { 

} 

Testcase geändert:

import static org.junit.Assert.assertTrue; 
import org.junit.Test; 

public class TestCase { 
@Test 
    public void test1 { 
     assertTrue (tmp.getTermin().equals(soll)); 
    } 
} 
+0

Hallo, mache ich die gleiche Sache, aber ich bekomme 'runnable Methoden' Fehler – secret

0

Sicher wird es nicht funktionieren, da Sie der Testsuite nicht sagen, was Ihre Testklassen sind.

Aber ich frage mich, warum Sie nicht die "klassische Art und Weise" für den Aufbau von Test-Suiten verwenden, die ant mit jUnit Ameisen-Aufgaben ist.

2

Nahm mich auch ein wenig um es herauszufinden, aber ich denke, das löst dein Problem:

Sie tun eine Suite.addTestSuite (TestCase.class), während Sie einen suite.addTest (TestCase.class) getan haben sollten.

Sie können auch eine Testsuite zu einer Testsuite hinzufügen, um eine ganze Hierarchie von Testsuiten zu erstellen. In diesem Fall müssen Sie suite.addTest() verwenden. Beachten Sie jedoch, dass Sie dann .suite() und nicht .class: suite.addTest (MyTestSuite. suite()) verwenden!

0

Seien Sie vorsichtig, wenn Sie die Code-Vervollständigung einer IDE verwenden, um den Import für @Test hinzuzufügen. Es muss import org.junit.Test und nichtimport org.testng.annotations.Test sein, zum Beispiel. Wenn Sie Letzteres tun, erhalten Sie den Fehler "keine ausführbaren Methoden". (Ich benutzte Intellij Idee 2017, die org.junit.jupiter.api.Test stattdessen importierte!)

Verwandte Themen