15 Stimmen

Wie kann man alle JUnit-Tests eines bestimmten Pakets ausführen?

Ich verwende JUnit 4 in Eclipse. Ich habe einige Testklassen in meinem Paket und möchte sie alle ausführen. Wie geht das?

24voto

DerMike Punkte 14328

Klicken Sie mit der rechten Maustaste auf das Paket im Paket-Explorer und wählen Sie "Ausführen als" und "Unit-Test".

9voto

John Punkte 2791

Wenn Sie in Eclipse mit der rechten Maustaste auf den Ordner klicken und Run As JUnit Test wählen, werden nur die Tests in diesem Ordner ausgeführt (d.h. Tests in verschachtelten Unterordnern werden nicht ausgeführt). Um alle Tests in einem Verzeichnis einschließlich der Tests in verschachtelten Verzeichnissen auszuführen, müssen Sie etwas wie googlecode.junittool box verwenden.

Auf diese Weise habe ich etwas wie das Folgende erstellt

package com.mycompany.myproject.mymodule;

import org.junit.runner.RunWith;

import com.googlecode.junittoolbox.SuiteClasses;
import com.googlecode.junittoolbox.WildcardPatternSuite;

@RunWith(WildcardPatternSuite.class)
@SuiteClasses({ "**/*Test.class" })
public class RunAllMyModuleTests {
}

Ich fügte die erforderlichen Abhängigkeiten (jar-Dateien) mit diesem in meinem mavin build (zusätzlich zu den junit Abhängigkeit):

<dependency>
    <groupId>com.googlecode.junit-toolbox</groupId>
    <artifactId>junit-toolbox</artifactId>
    <version>1.5</version>
</dependency>
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit-dep</artifactId>
    <version>4.8.2</version>
</dependency>

Wenn Sie mit der rechten Maustaste auf diese Klasse klicken und Als JUnit-Test ausführen wählen, werden alle Tests im angegebenen Verzeichnis ausgeführt, einschließlich aller Tests in verschachtelten Unterordnern.

7voto

user85421 Punkte 28350

Mit JUnit 4 verwende ich gerne eine annotierte AllTests Klasse:

@RunWith(Suite.class)
@Suite.SuiteClasses({ 

    // package1
    Class1Test.class,
    Class2test.class,
    ...

    // package2
    Class3Test.class,
    Class4test.class,
    ...

    })

public class AllTests {
    // Junit tests
}

und, um sicher zu sein, dass wir nicht vergessen, einen TestCase hinzuzufügen, habe ich einen Abdeckungstest (prüft auch, ob jede öffentliche Methode getestet wird).

5voto

Gregory Pakosz Punkte 66918

Ich habe eine AllTests Klasse, damit ich alle Tests auch von der Kommandozeile aus ausführen kann:

public final class AllTests
{
  /**
   * Returns a <code>TestSuite</code> instance that contains all the declared
   * <code>TestCase</code> to run.
   * 
   * @return a <code>TestSuite</code> instance.
   */
  public static Test suite()
  {
    final TestSuite suite = new TestSuite("All Tests");

    suite.addTest(Test1.suite());
    suite.addTest(Test2.suite());
    suite.addTest(Test3.suite());

    return suite;
  }

  /**
   * Launches all the tests with a text mode test runner.
   * 
   * @param args ignored
   */
  public static final void main(String[] args)
  {
    junit.textui.TestRunner.run(AllTests.suite());
  }

} // AllTests

Wo jede Testklasse definiert

  /**
   * Returns a <code>TestSuite</code> instance that contains all
   * the declared <code>TestCase</code> to run.
   * 
   * @return a <code>TestSuite</code> instance.
   */
  public static final Test suite()
  {
    return new TestSuite(Test1.class); // change the class accordingly
  }

5voto

Istvan Devai Punkte 3872

Mit JUnit5 können Sie ganz einfach eine "Suite"-Klasse erstellen, die alle Tests in einem Paket (oder sogar Unterpaketen, es funktioniert rekursiv) ausführt:

@RunWith(JUnitPlatform.class)
@SelectPackages("my.test.package")
public class MySuite {
}

Sobald das erledigt ist, können Sie diese Suite mit "Run as Test" ausführen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X