2015-07-17 3 views
15

Когда я работает мой JUnit тест, консольную печать этого Excpetion:затмения бросает java.lang.NullPointerException при запуске Spring JUnit

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) 

и Базовые тестовый объект, как этот

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

И в JUnit Метод, подобный этому:

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

Мой проект - проект Java EE, используя maven для управления lib, используя весенний человек возрастные бобы.

Моя Развивать Окружающая среда:
Mac OS X Yosetime 10.10.4
Eclipse, Java EE IDE для веб-разработчиков (Версия: Mars Release (4.5.0))
Maven плагин (установить из Eclipse-> Установить новый Программное обеспечение)

Я предполагаю, что это конфликт между eclipse junit и project junit config, но я не уверен.

Как решить проблему, спасибо.

+1

Вы можете поделиться своей структурой проекта –

+0

@kiwi - Я вижу, что нет принятого ответа, но мне просто интересно, если вы разобрались с этим. –

+0

Какую версию JUnit и Spring вы используете? – cheffe

ответ

0

ли это:

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

Наткнулся же NPE на Eclipse, Марс при выполнении (одиночных) тестов JUnit.

Я попытался создать совершенно новое рабочее пространство и добавил несколько тестовых классов + методы тестирования, но использовал библиотеку JUnit, поставляемую с Eclipse Mars (версия 4.12). В этой библиотеке я мог выполнять все тесты с Марса.

В другом рабочем пространстве/проекте, где у меня была проблема, прежде чем я использую более старую версию JUnit.

Я думаю, что эта старая версия JUnit является проблемой, ей придется перейти на более новую версию.

3

Да. Я поднял ошибку против Eclipse, и они посоветовали изменить мою зависимость на более новую версию JUnit.

Я пошел от JUnit 4.4 до JUnit 4.9, и он снова начал работать.

+0

Спасибо! Работает. – PrestigeDev

Смежные вопросы