aem 的单元测试不包含条件
unit testing for aem not covering a condition
我是单元测试的新手。我将 junit5 用于 aem 6.5 应用程序。我正在尝试编写单元测试,以便我可以迁移到要求至少 50% 单元测试的云,因此我现在正在做的事情。我的代码有一个 getTags() 的初始化方法。我的单元测试工作正常,但 jacoco 报告了一条未被覆盖的行。如果能帮助我找到正确的方向,我们将不胜感激。
我有这个class:
@Self
private SlingHttpServletRequest request;
@ValueMapValue
private List<String> tags;
@Override
public String getExportedType() {
return RESOURCE_TYPE;
}
@PostConstruct
public void init() {
Resource tagsNode = request.getResource().getChild("tags");
tags = new ArrayList<>();
if (tagsNode!=null) {
for (Resource child : tagsNode.getChildren()) {
TagModel tag = child.adaptTo(TagModel.class);
tags.add(tag.getTag());
}
}
}
public List<String> getTags() {
return this.tags;
}
我有这个 aem 单元测试
@Test
void testGetTags() {
List<String> expected = new ImmutableList.Builder<String>()
.add("4")
.add("22")
.build();
ctx.currentResource("/content/blog_placeholder");
BlogPlaceholderModel blogPlaceholderModel = ctx.request().adaptTo(BlogPlaceholderModel.class);
List<String> actual = blogPlaceholderModel.getTags();
assertEquals(expected, actual);
}
@Test
void testGetExportedType() {
final String expected = "furniture-row/components/content/blog-placeholder";
ctx.currentResource("/content/blog_placeholder");
BlogPlaceholderModel blogPlaceholderModel = ctx.request().adaptTo(BlogPlaceholderModel.class);
String actual = blogPlaceholderModel.getExportedType();
assertEquals(expected, actual);
}
出于某种原因,我的测试没有涵盖 if 条件:
我错过了什么?谢谢
您的测试部分覆盖了这一行。
您确实对 (tagsNode != null) == true
的情况进行了测试,但没有对 (tagsNode != null) == false
的情况进行测试。因此,该线是黄色的,表示并未涵盖 if
语句的所有“分支”。
我是单元测试的新手。我将 junit5 用于 aem 6.5 应用程序。我正在尝试编写单元测试,以便我可以迁移到要求至少 50% 单元测试的云,因此我现在正在做的事情。我的代码有一个 getTags() 的初始化方法。我的单元测试工作正常,但 jacoco 报告了一条未被覆盖的行。如果能帮助我找到正确的方向,我们将不胜感激。
我有这个class:
@Self
private SlingHttpServletRequest request;
@ValueMapValue
private List<String> tags;
@Override
public String getExportedType() {
return RESOURCE_TYPE;
}
@PostConstruct
public void init() {
Resource tagsNode = request.getResource().getChild("tags");
tags = new ArrayList<>();
if (tagsNode!=null) {
for (Resource child : tagsNode.getChildren()) {
TagModel tag = child.adaptTo(TagModel.class);
tags.add(tag.getTag());
}
}
}
public List<String> getTags() {
return this.tags;
}
我有这个 aem 单元测试
@Test
void testGetTags() {
List<String> expected = new ImmutableList.Builder<String>()
.add("4")
.add("22")
.build();
ctx.currentResource("/content/blog_placeholder");
BlogPlaceholderModel blogPlaceholderModel = ctx.request().adaptTo(BlogPlaceholderModel.class);
List<String> actual = blogPlaceholderModel.getTags();
assertEquals(expected, actual);
}
@Test
void testGetExportedType() {
final String expected = "furniture-row/components/content/blog-placeholder";
ctx.currentResource("/content/blog_placeholder");
BlogPlaceholderModel blogPlaceholderModel = ctx.request().adaptTo(BlogPlaceholderModel.class);
String actual = blogPlaceholderModel.getExportedType();
assertEquals(expected, actual);
}
出于某种原因,我的测试没有涵盖 if 条件:
我错过了什么?谢谢
您的测试部分覆盖了这一行。
您确实对 (tagsNode != null) == true
的情况进行了测试,但没有对 (tagsNode != null) == false
的情况进行测试。因此,该线是黄色的,表示并未涵盖 if
语句的所有“分支”。