首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于基于视觉的adobe cq5组件的junit测试?

关于基于视觉的adobe cq5组件的junit测试?
EN

Stack Overflow用户
提问于 2015-08-21 20:41:08
回答 1查看 831关注 0票数 0

我有一个类似下面的控制器代码,我在下面的控制器代码中创建了一些what测试,但它给出了whenNullPointerExceptionthenReturn()方法

BioDetailsController.java

代码语言:javascript
复制
package com.biodetails.controller;

import javax.jcr.Node;
import javax.jcr.PathNotFoundException;
import javax.jcr.RepositoryException;
import javax.jcr.Session;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.adobe.cq.sightly.WCMUse;
import com.biodetails.bean.BioDetailsBean;
import com.biodetails.utility.BioDetailsConstants;

public class BioDetailsController extends WCMUse {

   private static final Logger LOGGER = LoggerFactory.getLogger(BioDetailsConstants.class);

   private BioDetailsBean bioDetailsBean;

   @Override
   public void activate() throws Exception {

      LOGGER.info("Class : " + this.getClass().getName()
              + " : Method : activate() : [Start]");

      bioDetailsBean = new BioDetailsBean();

      String prsnInfoPath = getProperties().get(
              BioDetailsConstants.PERSON_DETAILS, String.class);
      Session session = getResourceResolver().adaptTo(Session.class);
      try {

         Node node = session.getNode(prsnInfoPath);

         String description = getProperties().get(
                 BioDetailsConstants.JCR_DESCRIPTION, String.class);
         String introText = getProperties().get(
                 BioDetailsConstants.JCR_INTROTEXT, String.class);

         String firstName = node
                 .getProperty(BioDetailsConstants.JCR_FSTNAME).getValue()
                 .getString();
         String image = node.getProperty(BioDetailsConstants.JCR_IMAGE)
                 .getValue().getString();

         String recrtUniv = node
                 .getProperty(BioDetailsConstants.JCR_RECRTUNIV).getValue()
                 .getString();
         String title = node.getProperty(BioDetailsConstants.JCR_TITLE)
                 .getValue().getString();

         bioDetailsBean.setDescription(description);
         bioDetailsBean.setFirstName(firstName);
         bioDetailsBean.setImage(image);
         bioDetailsBean.setIntroText(introText);
         bioDetailsBean.setRecrtUniv(recrtUniv);
         bioDetailsBean.setTitle(title);

      } catch (PathNotFoundException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
      } catch (RepositoryException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
      }

      LOGGER.info("Class : " + this.getClass().getName()
              + " : Method : activate() : [End]");

   }

   /**
    * @return the bioDetailsBean
    */
   public BioDetailsBean getBioDetailsBean() {
      return this.bioDetailsBean;
   }

   /**
    * @param bioDetailsBean the bioDetailsBean to set
    */
   public void setBioDetailsBean(BioDetailsBean bioDetailsBean) {
      this.bioDetailsBean = bioDetailsBean;
   }

}

BioDetailsControllerTest.java

代码语言:javascript
复制
package com.biodetails;

import io.wcm.testing.mock.aem.junit.AemContext;

import javax.jcr.Node;

import org.apache.sling.api.resource.ValueMap;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.mockito.Mock;

import com.adobe.cq.sightly.WCMUse;
import com.biodetails.bean.BioDetailsBean;
import com.biodetails.controller.BioDetailsController;


public class BioDetailsControllerTest extends WCMUse {


   BioDetailsController underTest;

   @Mock
   WCMUse wcmuse_mock;

   @Mock
   Node node_mock;

   @Mock
   ValueMap V_MOCK;

   @Mock
   @Rule
   public final AemContext context = new AemContext();

   private BioDetailsBean bioDetailsBean;

   @Before
   public void setUp() throws Exception {
      //wcmuse_mock=mock(WCMUse.class);
      // wcmuse_mock = Mock(WCMUse.class);
      underTest = new BioDetailsController();


   }

   @Test
   public void activateTest() throws Exception {

      when(wcmuse_mock.getProperties()).thenReturn(V_MOCK);//HERE IAM GETTING NULL POINTER EXCEPTION
      underTest.activate();
      //assertTrue(true);
   }


}

你能建议一下如何为这个简单的控制器写测试用例吗?我试过了,但它给出了NullPointerException

EN

回答 1

Stack Overflow用户

发布于 2015-08-21 21:23:34

在您的@Before方法put中

代码语言:javascript
复制
MockitoAnnotations.initMocks(this);

喜欢

代码语言:javascript
复制
@Before
   public void setUp() throws Exception {
      MockitoAnnotations.initMocks(this);
      underTest = new BioDetailsController();
   }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32140584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档