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í.