【发布时间】:2020-11-17 00:49:41
【问题描述】:
我正在 AEM 中为 Sling Model 进行非常基本的单元测试,因此,当我运行测试时,我收到以下错误:
[错误] CtaModelTest.testGetText:36 NullPointer
这是我的 Java 代码,模型是一个非常基本的 Sling AEM 模型,我使用的是@ModelAnnotation,如下所示:
@Model(adaptables = SlingHttpServletRequest.class, defaultInjectionStrategy = DefaultInjectionStrategy.OPTIONAL)
package com.myproject.core.models;
import org.apache.commons.lang3.StringUtils;
import org.apache.sling.api.resource.Resource;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import com.day.cq.wcm.api.Page;
import io.wcm.testing.mock.aem.junit5.AemContext;
import io.wcm.testing.mock.aem.junit5.AemContextExtension;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
import junitx.util.PrivateAccessor;
import javax.inject.Inject;
@ExtendWith(AemContextExtension.class)
class CtaModelTest {
private static final String COMPONENT_PATH = "/content/campaigns/myproject/master/demo-campaign/demo-email";
private CtaModel ctaModel;
private Page page;
private Resource resource;
@BeforeEach
public void setup(AemContext context) throws Exception {
context.load().json("/ctaModelTest.json", COMPONENT_PATH);
context.addModelsForClasses(CtaModel.class);
resource = context.resourceResolver().getResource(COMPONENT_PATH + "/jcr:content/par/hero/cta");
ctaModel = resource.adaptTo(CtaModel.class);
}
@Test
void testGetText() throws Exception {
String txt = ctaModel.getText();
assertNotNull(txt);
}
}
谁能帮我解决它?
【问题讨论】:
-
您能否发布您的模型代码以及您正在加载到测试 AEM 上下文中的 JSON 文档?这可能是一个简单的属性名称不匹配,但如果没有看到 NPE 发生的行就很难说。