2016-05-25 10 views
0

それは私のtestHelperです:UserDaoImplのjava.lang.ExceptionInInitializerError。 <clinit>(UserDaoImpl.java:71)

@RunWith(SpringJUnit4ClassRunner.class) 
    @ContextConfiguration(locations = { "classpath*:WEB-INF/spring/appServlet/servlet-context.xml" }) 

    public class TestHelper { 

     @Mock 
     private UserDaoImpl userDaoImpl; 
     @InjectMocks 
     private Helper helper=new Helper(); 

     private MockMvc mockMvc; 
     String msg = "Success"; 
     int status = 200; 
     ResponseMessage message = new ResponseMessage(); 

     @Before 
     public void setup() { 
      MockitoAnnotations.initMocks(this); 
      this.mockMvc = MockMvcBuilders.standaloneSetup(helper).build(); 
     } 

     @Test 
      public void testCategories() throws Exception { 
      message = helper.getCategories(0); 
      assertNotNull(message); 
      Assert.assertEquals(status, message.getStatus()); 
      Assert.assertEquals(msg, message.getMessage()); 
     } } 

それは私のヘルパークラスです:

public class Helper extends BaseHelper { 

    @Autowired 
    private UserDao userDao; 
    private static final Logger logger = LoggerFactory 
      .getLogger(Helper.class); 

    public ResponseMessage getCategories(int categoryID) { 
     logger.info("**Helper getCategories() entry*****"); 
     ResponseMessage message; 
     try { 
      List<Category> categories = userDao 
        .getCategories(categoryID); 
      String jsonConverted = Utility 
        .convertToJsonString(categories); 
      com.fasterxml.jackson.databind.ObjectMapper mapper = new com.fasterxml.jackson.databind.ObjectMapper(); 
      Object obj = mapper 
        .readValue(
          jsonConverted, 
          new TypeReference<List<Category>>() { 
          }); 
      message = prepareResponse(obj, 200, "Success"); 
     } catch (Exception e) { 
      logger.error("****Exception in Helper getCategories() : " 
        + e.getStackTrace()); 

      message = prepareResponse(null, 500, 
        e.getMessage()); 

     } 
     logger.info("***Helper getCategories() exit****"); 
     return message; 
    } 
} 

それは私のUserDaoImplクラスです:

public class UserDaoImpl implements UserDao { 

    private static Properties applicationProperties; 

    static { 
     applicationProperties = Utility.loadAppProperties(); 
    } 
    public List<Category> getCategories(int category_id) { 
     Session session = null; 
     List<Category> categories = null; 
     try { 
      session = sessionFactory.getCurrentSession(); 
      logger.info("enter into getCategories from method's body"); 
      Transaction tx = session.beginTransaction(); 
      if (!Utility.isZeroInt(category_id)) { 
       List list = session.createCriteria(Category.class).add(Restrictions.eq("category_id", category_id)) 
         .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY).list(); 
       categories = list; 
      } else { 
       List list = session.createCriteria(Category.class).setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY) 
         .list(); 
       categories = list; 
      } 
      tx.commit(); 
     } catch (Exception e) { 
      throw new DataException("Unable to get categories. Please try after some time."); 
     } 
     logger.info("exit from getCategories method's body"); 
     return categories; 
    } 
} 

私は私のヘルパーをテストするときクラスの場合、私はuserdaoimplクラスのapplicationProperties = Utility.loadAppProperties();でエラーを受け取りました。エラーは java.lang.ExceptionInInitializerErrorです。このエラーは、userdaoimplクラスのプロパティファイルをロードするときに生成されます。

この

は、スタックトレース

java.lang.ExceptionInInitializerError 
    at com.zon.dao.UserDaoImpl.<clinit>(UserDaoImpl.java:71) 
    at sun.reflect.GeneratedSerializationConstructorAccessor1.newInstance(Unknown Source) 
    at java.lang.reflect.Constructor.newInstance(Unknown Source) 
    at org.objenesis.instantiator.sun.SunReflectionFactoryInstantiator.newInstance(SunReflectionFactoryInstantiator.java:40) 
    at org.objenesis.ObjenesisBase.newInstance(ObjenesisBase.java:59) 
    at org.mockito.internal.creation.jmock.ClassImposterizer.createProxy(ClassImposterizer.java:111) 
    at org.mockito.internal.creation.jmock.ClassImposterizer.imposterise(ClassImposterizer.java:51) 
    at org.mockito.internal.util.MockUtil.createMock(MockUtil.java:54) 
    at org.mockito.internal.MockitoCore.mock(MockitoCore.java:44) 
    at org.mockito.Mockito.mock(Mockito.java:882) 
    at org.mockito.internal.configuration.DefaultAnnotationEngine.processAnnotationOn(DefaultAnnotationEngine.java:59) 
    at org.mockito.internal.configuration.DefaultAnnotationEngine.createMockFor(DefaultAnnotationEngine.java:34) 
    at org.mockito.internal.configuration.DefaultAnnotationEngine.process(DefaultAnnotationEngine.java:84) 
    at org.mockito.internal.configuration.InjectingAnnotationEngine.process(InjectingAnnotationEngine.java:41) 
    at org.mockito.MockitoAnnotations.scan(MockitoAnnotations.java:110) 
    at org.mockito.MockitoAnnotations.initMocks(MockitoAnnotations.java:95) 
    at com.zon.testHelper.TestHelper.setup(TestHelper.java:64) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    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.RunBefores.evaluate(RunBefores.java:27) 
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76) 
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) 
    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:86) 
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) 
    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) 
Caused by: java.lang.NullPointerException 
    at java.util.Properties$LineReader.readLine(Unknown Source) 
    at java.util.Properties.load0(Unknown Source) 
    at java.util.Properties.load(Unknown Source) 
    at com.zon.utils.Utility.<clinit>(Utility.java:27) 
    ... 39 more 
+1

スタックトレースを共有してください。 – shankarsh15

+0

エラーはおそらく 'applicationProperties = Utility.loadAppProperties();'であり、 'loadAppProperties'がエラーを引き起こした原因をstackTraceで確認する必要があります。不足しているリソースファイルがあると思います。 @ shankarsh15が正確な分析のために述べたようにスタックトレースは重要です。 –

+0

こんにちは@shankarsh ...今私はトレースを添付しました。それをチェックしてください。 – Shailu

答えて

0
Caused by: java.lang.NullPointerException 
    at java.util.Properties$LineReader.readLine(Unknown Source) 

上記の例外が言うにあるそのプロパティは、クラスパスのルートにファイルを置くために、プロパティfile.Tryを見つけることができません。

+0

こんにちは@shankarsh .... "applicationProperties = Utility.loadAppProperties();"を無視する方法があります。 in userdaimpl。私はプロパティファイルのクラスパスを適切に与えるので、私はテストケースから呼び出したときにプロパティファイルをロードすることができません。 – Shailu

+0

この記事に従ってください:http://stackoverflow.com/questions/12024672/how-to-load-property-file-from-classpath – shankarsh15

+0

私は同じことをするhvです。 – Shailu

関連する問題