web-dev-qa-db-fra.com

Eclipse lève une exception Java.lang.NullPointerException lors de l'exécution de Spring JUnit

Lorsque j'exécute mon test Junit, la console affiche cette excuse:

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)

Et l'objet de test de base comme celui-ci

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

Et la méthode JUnit comme ceci:

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

Mon projet est un projet Java EE, utilisant maven pour gérer lib, et utilisant des haricots printemps à gérer.

Mon environnement de développement est:
Mac OS X Yosetime 10.10.4
Eclipse Java EE IDE pour les développeurs Web (Version: Mars Release (4.5.0))
Plugin Maven (installer depuis Eclipse-> Installer un nouveau logiciel)

Je suppose que ceci est un conflit entre Eclipse Junit et Project Junit Config, mais je ne suis pas sûr.

Comment résoudre le problème, merci.

16
kiwi

Entré dans le même NPE sur Eclipse Mars lors de l'exécution de tests (uniques) JUnit.

J'ai essayé de créer un nouvel espace de travail et ajouté quelques classes de test + méthodes de test, mais j'ai utilisé la bibliothèque JUnit fournie avec Eclipse Mars (version 4.12). Avec cette bibliothèque, je pourrais exécuter tous les tests depuis Mars.

Dans l’autre espace de travail/projet où j’avais le problème avant d’utiliser une version plus ancienne de JUnit.

Je pense que cette ancienne version de JUnit est le problème, devra mettre à niveau vers une version plus récente.

12
Maximilian Petkov

Oui. J'ai soulevé un bogue contre Eclipse et ils m'ont conseillé de changer ma dépendance en une version plus récente de JUnit.

Je suis passé de JUnit 4.4 à JUnit 4.9 et cela a recommencé à fonctionner.

4
cs94njw

Faire ceci: 

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("file:src/main/webapp/WEB-INF/applicationContext.xml")
@WebAppConfiguration
public class StaffInfoServiceImplTest { ..Your Code.. }
0
Satyaki