2011-12-19 92 views
2

當我嘗試單獨運行junit測試時,出現此錯誤。而當我嘗試運行它使用Ant(它運行所有測試)它運行良好。誰能告訴我可能的原因是什麼? src文件夾和測試文件夾位於同一層次結構中。我必須鏈接src和測試文件夾嗎?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 2011-12-19 15:55:14

+0

'com.brinkmat.dao.utils.DumpLogger。 (DumpLogger.java:26)'這是原因,那裏的代碼是什麼? – 2011-12-19 15:55:50

+0

RuntimeEnvironment environment = RuntimeEnvironment.getRuntimeEnvironment(); \t String logFile =「log4j」。 +環境+「.properties」; logFile = Thread.currentThread()。getContextClassLoader()。getResource(logFile).getFile(); \t PropertyConfigurator.configure(logFile);此代碼在那裏。 – vikas27 2011-12-19 15:59:44

回答

0

根據您的意見,我的第一個猜測是文件「log4jWHATEVER.properties」不在類路徑中。

0

屬性文件可能在測試目錄中丟失,屬性文件可能在src目錄中用於log4j,數據庫和應用程序的特定目的。 junit測試人員將從test/resources目錄中引用propety文件。所以這些屬性都應該保留在測試目錄中(無論運行應用程序所需的屬性文件,那些屬性文件應該在運行junit測試時在測試資源目錄中)。

3

這聽起來像一些屬性文件是由螞蟻讀取,而不是你的單元測試。

上面添加你的單元測試的類聲明的事情:如果您使用Spring,你可以很容易地被彈簧JUnit類亞軍運行,並有設置屬性添加屬性

@RunWith(SpringJUnit4ClassRunner.class)來 @ ContextConfiguration(locations = {「myconfig.xml」})

並添加你的spring bean配置(myconfig.xml或者你想調用它的任何東西)在你的單元測試的classpath中。例如:

<?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> 
相關問題