Question

il devrait être morceau de gâteau pour les programmeurs utilisant testng. J'ai ce scénario

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

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

Mais je dois le contexte du printemps pour être charger après @BeforeClass. Je je suis venu avec des méthodes de AbstractTestNGSpringContextTests remplaçant:

@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);
}

et faire ma méthode

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

Mais je reçois:

  

Causé par: org.testng.TestNGException:   org.springframework.test.context.testng.AbstractTestNGSpringContextTests.springTestContextPrepareTestInstance ()   ne sont pas autorisés à dépendre protégé   néant   org.springframework.test.context.testng.AbstractTestNGSpringContextTests.springTestContextBeforeTestClass ()   jette java.lang.Exception

Rendre public ne pas non plus d'aide. Pourrait-il mentionner quelqu'un ici si cela peut être fait d'une manière de travail :-) Je sais que je pouvais charger le TestContext manuellement, mais ce ne serait pas si fantaisie.

méthode

Il fonctionne comme ça, mais TestContextManager n'est pas visible, donc je ne peux pas appeler prepareTestInstance () sur elle:

@Override
@BeforeClass(alwaysRun = true, dependsOnMethods = "setUpClass")
public void springTestContextPrepareTestInstance() throws Exception {
}
Était-ce utile?

La solution

méthode Eh bien, je personnalisé créé DependencyInjectionTestExecutionListener et je outrepassée injectDependencies () et fait mon code d'initialisation là

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

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);
    }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top