example - Eclipse lanza java.lang.NullPointerException cuando se ejecuta Spring JUnit
junit spring mvc example (3)
Encontré el mismo NPE en Eclipse Mars al ejecutar (solo) pruebas JUnit.
Intenté crear un espacio de trabajo completamente nuevo y agregué algunas clases de prueba + métodos de prueba, pero usé la biblioteca JUnit que se incluye con Eclipse Mars (versión 4.12). Con esta biblioteca, podría ejecutar todas las pruebas desde Marte.
En el otro espacio de trabajo / proyecto donde tuve el problema antes de usar una versión anterior de JUnit.
Creo que esta vieja versión de JUnit es el problema, tendrá que actualizarse a una versión más nueva.
Cuando ejecuto mi prueba Junit, la consola imprime este Excpetion:
java.lang.NullPointerException
at org.eclipse.jdt.internal.junit4.runner.SubForestFilter.shouldRun(SubForestFilter.java:81)
at org.junit.internal.runners.JUnit4ClassRunner.filter(JUnit4ClassRunner.java:110)
at org.junit.runner.manipulation.Filter.apply(Filter.java:47)
at org.junit.internal.requests.FilterRequest.getRunner(FilterRequest.java:34)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createFilteredTest(JUnit4TestLoader.java:77)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:68)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:43)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:444)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
Y el objeto de prueba Base como este
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.transaction.TransactionConfiguration;
import org.springframework.transaction.annotation.Transactional;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {
"classpath*:config/spring/appcontext-*.xml",
"classpath*:config/sqlmap/*.xml"
})
@TransactionConfiguration(defaultRollback = false)
@Transactional
public abstract class AbstractTestObject {
static {
//DOMConfigurator.configure("target/classes/log/log4j.xml");
}
}
Y el Método JUnit como este:
public class StaffInfoServiceImplTest extends AbstractTestObject{
@Autowired
StaffInfoServiceImpl service;
@Test
public void insertTest() {
StaffInfo bo = new StaffInfo();
bo.setEmail("[email protected]");
bo.setEntId(1);
bo.setEntStaffNum("000XXXX");
bo.setName("julia");
bo.setPhone("00000000");
bo.setSerialNum("SD12233KSRONDU189342ND");
bo.setSuperior(2321);
bo.setDepartment("Sale");
bo.setSingleCredit(BigDecimal.valueOf(100));
bo.setMonthlyCredit(BigDecimal.valueOf(10000));
SLTContext c = new SLTContext();
c.setOperator("0000001");
service.insertStaffInfo(bo, c);
}
}
Mi proyecto es el proyecto Java EE, que usa maven para administrar lib, que usa beans beans de gestión.
Mi entorno de desarrollo es:
Mac OS X Yosetime 10.10.4
Eclipse Java EE IDE para desarrolladores web (versión: Mars Release (4.5.0))
Complemento de Maven (instalar desde Eclipse-> Instalar nuevo software)
Supongo que esto es un conflicto entre eclipse junit y junit config del proyecto, pero no estoy seguro.
Cómo resolver el problema, gracias.
Hacer esto :
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("file:src/main/webapp/WEB-INF/applicationContext.xml")
@WebAppConfiguration
public class StaffInfoServiceImplTest { ..Your Code.. }
Sí. Levanté un error en contra de Eclipse, y me recomendaron cambiar mi dependencia a una versión más nueva de JUnit.
Pasé de JUnit 4.4 a JUnit 4.9 y comenzó a funcionar de nuevo.