Frage

ist eine neue (oder anders) Instanz von TestCase Objekt wird verwendet, um jede Testmethode in einem JUnit-Testfall ausgeführt werden? Oder eine Instanz für alle Tests wiederverwendet?

public class MyTest extends TestCase {
  public void testSomething() { ... }
  public void testSomethingElse() { ... }
}

Während dieser Test ausgeführt wird, wie viele Instanzen MyTest Klasse erstellt wird?

Wenn möglich, einen Link zu einem Dokument oder Quellcode, in dem ich das Verhalten überprüfen kann.

War es hilfreich?

Lösung

konnte ich nicht eine klare Antwort in der JUnit-Dokumentation über Ihre Frage finden, aber die Absicht, als anjanb schrieb, ist, dass jeder Test unabhängig von dem anderen ist, so dass eine neue Instanz Testcase für jeden Test erstellt werden könnte, um zu sein ausgeführt werden.

Wenn Sie teuren Testaufbau haben ( „ Armaturen “), die Sie wollen über alle Testfälle in einer Testklasse geteilt werden, können Sie die verwenden @BeforeClass Annotation auf einer statischen Methode, um dieses Ergebnis zu erzielen: http://junit.sourceforge.net /javadoc_40/org/junit/BeforeClass.html . Beachten Sie jedoch, dass eine neue Instanz noch für jeden Test erstellt werden kann, aber das hat keinen Einfluss auf die statischen Daten Ihre @BeforeTest Methode initialisiert wird.

Andere Tipps

Ja, eine separate Instanz erstellt wird.

Während diese Prüfung ausgeführt, 2 Instanzen von MyTest erstellt werden.

Wenn Sie ein anderes Verhalten wünschen, eine Option ist ein ähnliches Werkzeug zu benutzen, genannt TestNG ( http://testng.org / doc / ).

Es gibt eine Instanz für jeden Testlauf. Versuchen

public class MyTest extends TestCase {
  public MyTest() { System.out.println("MyTest Constructor");
  public void setUp() { System.out.println("MyTest setUp");
  public void tearDown() { System.out.println("MyTest tearDown");
  public void testSomething() { System.out.println("MyTest testSomething");
  public void testSomethingElse() { System.out.println("MyTest testSomethingElse");
}

Der Sourcecode (einschließlich der auf neuere Versionen - Sie und mein Beispiel ist Junit 3) ist auf http: // www. junit.org

Wenn Sie das fragen, weil Sie besorgt über Daten, die in Ihrem Konstruktor initialisiert und neu initialisiert, beachten Sie, dass die vorgeschriebene Art und Weise Ihre Testfälle Daten zu initialisieren ist über setUp () und tearDown () ausschließlich.

Ja, auf jeden Fall. Ich fand, dass Daten, die ich in Instanzvariablen gespeichert sind, nicht aufgrund dieser Konstruktion zwischen den Tests zugegriffen werden kann.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top