2011-12-19 3 views
2

Когда я пытаюсь запустить тест junit, я могу получить эту ошибку. И когда я пытаюсь запустить его с помощью Ant (который запускает все тесты), он работает нормально. Может ли кто-нибудь сказать мне, что может быть возможной причиной? Папка src и тестовая папка находятся в одной иерархии. Нужно ли мне связывать папку src и test?Junit ExceptionInInitializerError

java.lang.ExceptionInInitializerError 
at com.brinkmat.dao.impl.OwnerUtilsTest.testModifyOwnerAccount(OwnerUtilsTest.java:105) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44) 
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) 
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41) 
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) 
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31) 
at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79) 
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71) 
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49) 
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) 
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) 
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) 
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) 
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) 
at org.junit.runners.ParentRunner.run(ParentRunner.java:236) 
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46) 
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) 

Caused by: java.lang.NullPointerException 
at com.brinkmat.dao.utils.DumpLogger.<init>(DumpLogger.java:26) 
at com.brinkmat.dao.utils.DumpLogger.getInstance(DumpLogger.java:34) 
at com.brinkmat.deploy.Helper.<clinit>(Helper.java:64) 
... 25 more 

java.lang.NoClassDefFoundError: Could not initialize class com.brinkmat.deploy.Helper 
at com.brinkmat.dao.impl.OwnerUtilsTest.tearDown(OwnerUtilsTest.java:28) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44) 
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) 
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41) 
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:37) 
at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79) 
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71) 
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49) 
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) 
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) 
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) 
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) 
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) 
at org.junit.runners.ParentRunner.run(ParentRunner.java:236) 
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46) 
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) 
+1

'Не удалось инициализировать класс com.brinkmat.deploy.Helper' <- это то, что вы должны исправить – fge

+0

' com.brinkmat.dao.utils.DumpLogger. (DumpLogger.java:26) 'Это причина, какой там код? –

+0

RuntimeEnvironment environment = RuntimeEnvironment.getRuntimeEnvironment(); \t Строка logFile = "log4j." + окружающая среда + ".properties"; \t logFile = Thread.currentThread(). GetContextClassLoader(). GetResource (logFile) .getFile(); \t PropertyConfigurator.configure (logFile); Этот код есть. – vikas27

ответ

0

Согласно вашему комментарию моего первому предположение было бы, что файл «log4jWHATEVER.properties» не в пути к классам.

0

Файлы свойств могут быть пропущены в тестовом каталоге, файлы свойств могут использоваться в каталоге src для целей log4j, базы данных и приложения. тестер junit будет ссылаться на файлы propety из каталога test/resources. поэтому все свойства должны храниться в тестовом каталоге (независимо от файла свойств, необходимого для запуска приложения, этот файл свойств должен находиться в каталоге тестовых ресурсов при запуске теста junit).

3

Похоже, что некоторые файлы свойств читаются ant, а не вашими модульными тестами. Если вы используете весной, вы можете легко добавить свойства, запустив с пружинной JUnit класса бегуном и настройка свойств есть:

добавить вещи выше объявление класса вашего модульного тестирования в:

@RunWith (SpringJUnit4ClassRunner.class) @ ContextConfiguration (location = {"myconfig.xml"})

и добавьте конфигурацию вашей весенней фасоли (myconfig.xml или все, что вы хотите назвать) в пути к классу с помощью модульного теста. Например:

<?xml version="1.0" encoding="UTF-8"?> 
    <beans xmlns="http://www.springframework.org/schema/beans" > 
     <bean id="placeholderConfig" 
     class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
     <property name="properties"> 
       <value> 
        property1=value1 
        property2=value2 
        {etc...} 
       </value> 
       </property> 
     </bean> 
</beans> 
Смежные вопросы