Frage

Federstütze JUnit ganz gut auf, dass: Mit der RunWith und ContextConfiguration Anmerkung sieht es sehr intuitiv

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:dao-context.xml")

wird dieser Test in der Lage sein, sowohl in Eclipse & Maven in korrekt funktionieren. Ich frage mich, ob es ähnliche Sachen für TestNG. Ich betrachte diese „Next Generation“ Rahmen bewegen, aber ich habe keine Übereinstimmung für die Prüfung mit Frühling finden.

War es hilfreich?

Lösung

Es funktioniert auch mit TestNG. Ihre test Klasse Bedürfnisse erweitern eine der folgenden Klassen:

Andere Tipps

Hier ist ein Beispiel, das für mich gearbeitet:

import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
import org.testng.annotations.Test;

@Test
@ContextConfiguration(locations = {"classpath:applicationContext.xml"})
public class TestValidation extends AbstractTestNGSpringContextTests {

    public void testNullParamValidation() {
        // Testing code goes here!
    }
}

Frühling und TestNG arbeiten gut zusammen, aber es gibt einige Dinge bewusst zu sein. Abgesehen von Subklassen AbstractTestNGSpringContextTests, müssen Sie sich bewusst sein, wie interagiert es mit Standard TestNG Setup / Teardown Anmerkungen.

TestNG hat vier Ebenen der Setup

  • BeforeSuite
  • BeforeTest
  • BeforeClass
  • Vorbearbeitungsmethode

, die genau auftreten, wie Sie (gutes Beispiel für selbsterklärend APIs) erwarten. Diese alle einen optionalen Wert „dependsOnMethods“ genannt, was ein String oder String nehmen [], das ist der Namen oder Namen (n) des Verfahrens auf dem gleichen Niveau.

Die AbstractTestNGSpringContextTests Klasse hat eine BeforeClass kommentierten Methode namens springTestContextPrepareTestInstance, mit dem Sie Ihre Setup-Methode einstellen müssen, hängt von, wenn Sie eine autowired Klasse in es verwenden. Für Methoden, müssen Sie sich keine Sorgen zu machen über die autowiring, da kommt es, wenn die Testklasse-Setup, dass vor Klassenmethode ist.

Damit bleibt nur die Frage, wie man eine autowired Klasse in einem Verfahren mit BeforeSuite kommentierte verwenden kann. Sie können dies tun, indem springTestContextPrepareTestInstance manuell aufrufen -. Während dessen nicht Setup standardmäßig, dies zu tun, ich habe erfolgreich es mehrmals getan

Also, um zu veranschaulichen, eine modifizierte Version von Arup Beispiel:

import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
import org.testng.annotations.Test;

@Test
@ContextConfiguration(locations = {"classpath:applicationContext.xml"})
public class TestValidation extends AbstractTestNGSpringContextTests {

    @Autowired
    private IAutowiredService autowiredService;

    @BeforeClass(dependsOnMethods={"springTestContextPrepareTestInstance"})
    public void setupParamValidation(){
        // Test class setup code with autowired classes goes here
    }

    @Test
    public void testNullParamValidation() {
        // Testing code goes here!
    }
}
scroll top