2015-07-17 3 views
15

Als ich dieses Excpetion meinen JUnit-Test, Konsole Druck ausgeführt wird:Eklipse werfen java.lang.NullPointerException wenn der Frühling JUnit läuft

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) 

und das Basistestobjekt wie diese

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

Und die JUnit Verfahren wie folgt aus:

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

Mein Projekt ist Java EE-Projekt, maven mit lib zu verwalten, Federmann mit Alter Bohnen.

Mein Develop Umwelt ist:
Mac OS X Yosetime 10.10.4
Eclipse-Java EE IDE für Web-Entwickler (Version: Mars Mitteilung (4.5.0))
Maven Plugin (von Eclipse- installieren> Install New Software)

Ich denke, das ist ein Konflikt zwischen Eclipse Junit und Project Junit Config, aber ich bin mir nicht sicher.

So lösen Sie das Problem, danke.

+1

können Sie Ihre Projektstruktur teilen –

+0

@kiwi - Ich sehe, es gibt keine akzeptierte Antwort, aber ich habe mich nur gefragt, ob Sie einen Weg um dies herausgefunden haben. –

+0

Welche Version von JUnit und Spring verwenden Sie? – cheffe

Antwort

0

tun:

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

über die gleiche NPE auf Eclipse Mars kam, als (einzigen) -Tests JUnit ausgeführt wird.

Ich habe versucht, einen komplett neuen Arbeitsbereich zu erstellen und einige Testklassen + Testmethoden hinzugefügt, aber die JUnit-Bibliothek verwendet, die mit Eclipse Mars (Version 4.12) ausgeliefert wurde. Mit dieser Bibliothek konnte ich alle Tests von Mars aus durchführen.

In dem anderen Arbeitsbereich/Projekt, wo ich das Problem hatte, bevor ich eine ältere Version von JUnit verwende.

Ich denke, diese alte JUnit-Version ist das Problem, muss auf eine neuere Version aktualisieren.

3

Ja. Ich habe einen Fehler gegen Eclipse gemeldet, und sie haben meine Abhängigkeit von einer neueren Version von JUnit geändert.

Ich ging von JUnit 4.4 zu JUnit 4.9, und es begann wieder zu arbeiten.

+0

Danke! Funktioniert. – PrestigeDev

Verwandte Themen