Pregunta

debe ser pedazo de la torta para los programadores que usan TestNG. Tengo este escenario

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

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

Pero que iba a necesitar el contexto de primavera para ser carga hasta después de @BeforeClass. Yo vine con anulando métodos AbstractTestNGSpringContextTests:

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

y hacer que mi método

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

Pero entonces me sale:

Causado por: org.testng.TestNGException: org.springframework.test.context.testng.AbstractTestNGSpringContextTests.springTestContextPrepareTestInstance () no está permitido que depender protegido vacío org.springframework.test.context.testng.AbstractTestNGSpringContextTests.springTestContextBeforeTestClass () lanza java.lang.Exception

Que sea público también no ayuda. Podría por favor mencione a nadie aquí si se puede hacer de una manera de trabajo :-) Sé que puede mostrarse la TestContext de forma manual, pero eso no sería tan elegante.

Funciona de esta manera, pero no es visible TestContextManager así que no puedo llamar al método prepareTestInstance () en él:

@Override
@BeforeClass(alwaysRun = true, dependsOnMethods = "setUpClass")
public void springTestContextPrepareTestInstance() throws Exception {
}
¿Fue útil?

Solución

Método

Bueno, yo personalizado creado DependencyInjectionTestExecutionListener y tengo injectDependencies anulado () y hecho mi código de inicio de allí

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

y

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);
    }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top