pointer false ejemplo annotation java spring maven testng spring-test

java - ejemplo - spring autowired required false



Spring-Autowiring ocurre después de @BeforeClass cuando se ejecuta la prueba con maven-surefire (5)

Además, hasta que se solucione este problema , si las cosas siguen sin funcionar después de seguir los consejos anteriores O si no desea que su código se ejecute antes de cada método, agregue el siguiente código a su clase de prueba:

@Override @BeforeSuite protected void springTestContextPrepareTestInstance() throws Exception { super.springTestContextPrepareTestInstance(); }

Esto garantiza que el Contexto Spring se preparará antes de que se ejecuten los métodos @BeforeClass.

* nota, publiqué esta respuesta ya que en el título que está preguntando acerca de @BeforeClass, a pesar de que no hay uso de @BeforeClass en su código de muestra.

Tengo algunos problemas con la inyección de dependencia (Spring autowiring) y maven-surefire. La siguiente prueba funciona sin problemas cuando se ejecuta en eclipse con TestNG: el objeto de servicio se inyecta, luego se @BeforeClass método @BeforeClass .

@TransactionConfiguration(defaultRollback=false) @ContextConfiguration(locations={"/testContext.xml"}) public class MyServiceTest extends AbstractTransactionalTestNGSpringContextTests { @Autowired private MyService service; @BeforeTest public void setup() { System.out.println("*********************"+service); Assert.assertNotNull(service); }

Sin embargo, cuando ejecuto el mismo testcase con maven-surefire, se llama a la primera configuración (), lo que hace que la prueba falle:

[INFO] --- maven-surefire-plugin:2.7.2:test (default-test) @ myserver --- [INFO] Surefire report directory: D:/... ------------------------------------------------------- T E S T S ------------------------------------------------------- Running TestSuite **************************null 2011-03-04 11:08:57,462 DEBUG ionTestExecutionListener.prepareTestInstance - Performing dependency injection for test context [[TestContext@1fd6bea... 2011-03-04 11:08:57,462 DEBUG ractGenericContextLoader.loadContext - Loading ApplicationContext for locations [classpath:/testContext.xml].

¿Como puedó resolver esté problema? Si sustituyo @BeforeClass con @Test , funciona en maven como en el complemento eclipse de TestNG.

Maven-surefire-Plugin: 2.7.2

Eclipse: Helios Service Release 1

jdk1.6.0_14

Prueba NG: 5.14.10


Estoy de acuerdo con Cedric: use @BeforeMethod lugar de @BeforeTest , ya que la inyección de dependencia de Spring se produce en un método @BeforeClass.

  • Sam (autor de Spring TestContext Framework;))

Utilice @BeforeMethod , no @BeforeTest .


Utilice @PostConstruct no @BeforeXXX


Verifique si también tiene dependencia de spring-asm. Si tiene uno, entrará en conflicto con la dependencia de Spring-Core. Quité la dependencia asm y esto funcionó para mí.