Frage

Es sollte ein Kinderspiel für Programmierer mit Testng sein. Ich habe dieses Szenario

    @ContextConfiguration(locations={"customer-form-portlet.xml", "classpath:META-INF2/base-spring.xml" })
    public class BaseTestCase extends AbstractTestNGSpringContextTests {

...
        @BeforeClass
        public void setUpClass() throws Exception {

Aber ich würde den Frühlingskontext brauchen, um nach @BeForeclass geladen zu werden. II entwickelte übergeordnete AbstractTestNgSpringContextTests -Methoden: Methoden:

@BeforeClass(alwaysRun = true)
protected void springTestContextBeforeTestClass() throws Exception {
    this.testContextManager.beforeTestClass();
}

@BeforeClass(alwaysRun = true, dependsOnMethods = "springTestContextBeforeTestClass")
protected void springTestContextPrepareTestInstance() throws Exception {
    this.testContextManager.prepareTestInstance(this);
}

und machen meine Methode

@BeforeClass(alwaysRun = true, dependsOnMethods = "setUpClass")
protected void springTestContextPrepareTestClass() throws Exception {
}

Aber dann bekomme ich:

Verursacht durch: org.testng.Testngexception: org.springframework.test.context.testng.abstractTestNgspringContextTests.SpringtestStestContextPreparetestinStance () nicht auf protisierte void-Spring-PRINGRAME.Test.Test.Test.Test.Test.testng.AsplingSt.TestN.TestN.Testng. Lang.Exception

Machen Sie es auch nicht öffentlich. Könnte bitte jeder erwähnen, wenn es auf Arbeitsweise erledigt werden kann :-) Ich weiß, dass ich den Testcontext manuell laden könnte, aber das wäre nicht so schick.

Es funktioniert so, aber TestContextManager ist nicht sichtbar, daher kann ich die Methode PreparetESTInstance () darauf nicht aufrufen:

@Override
@BeforeClass(alwaysRun = true, dependsOnMethods = "setUpClass")
public void springTestContextPrepareTestInstance() throws Exception {
}
War es hilfreich?

Lösung

Nun, ich habe benutzerdefinierte AbhängigkeitsinjektionstexecutionListener erstellt und habe InjectDependencies () -Methoden überschrieben und meinen Init -Code dort durchgeführt

@TestExecutionListeners( inheritListeners = false, listeners = {DITestExecutionListener.class, DirtiesContextTestExecutionListener.class})
@ContextConfiguration(locations= "customer-form-portlet.xml")
public class BaseTestCase extends AbstractTestNGSpringContextTests {

UND

public class DITestExecutionListener extends DependencyInjectionTestExecutionListener {


    protected void injectDependencies(final TestContext testContext) throws Exception {

        INITSTUFF();

        Object bean = testContext.getTestInstance();
        AutowireCapableBeanFactory beanFactory = testContext.getApplicationContext().getAutowireCapableBeanFactory();
        beanFactory.autowireBeanProperties(bean, AutowireCapableBeanFactory.AUTOWIRE_NO, false);
        beanFactory.initializeBean(bean, testContext.getTestClass().getName());
        testContext.removeAttribute(REINJECT_DEPENDENCIES_ATTRIBUTE);
    }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top