Skip to main content
New Participant
April 26, 2022

JUnit test Cases failed

  • April 26, 2022
  • 2 replies
  • 2486 views

Hii, I am using assertEquals(expected, actual ) but when I run my test case my actual value was showing as null.

Error:

 

 

Sling Model:

 

 

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.

2 replies

MayurSatav
New Participant
April 26, 2022

Hi, @prachi_mathur ,

 

Could you please share your JUnit code? or otherwise try the below approach. I use the same approach for JUnit test cases. I modified my code as per your model screenshot.

 

import io.wcm.testing.mock.aem.junit5.AemContext;
import io.wcm.testing.mock.aem.junit5.AemContextExtension;
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 org.mockito.junit.jupiter.MockitoExtension;

import static org.junit.jupiter.api.Assertions.assertEquals;

@ExtendWith({AemContextExtension.class, MockitoExtension.class})
class AboutModelTest {

    private final AemContext aemContext = new AemContext();
    private About about;

    @BeforeEach
    void setUp() {
        aemContext.addModelsForClasses(About.class);
        aemContext.load().json("/com/mySite/core/models/about.json", "/component");
        Resource resource = aemContext.currentResource("/component/about");
        about=aemContext.request().adaptTo(About.class);
    }

    @Test
    void testGetEmail() {
        final String expected = "abc@gmail.com";
        assertEquals(expected, about.getEmail());
    }

    @Test
    void testGetAddress() {
        final String expected = "India";
        assertEquals(expected, about.getAddress());
    }
}

and create aboutModel.json file under core/src/test/resource folder

 

{
  "aboutModel": {
    "email":"abc@gmail.com",
    "address": "india"
  }
}

 

 

New Participant
April 26, 2022

Still getting this error 

 

This the test code

package com.rove.core.core.models;
import io.wcm.testing.mock.aem.junit5.AemContext;
import io.wcm.testing.mock.aem.junit5.AemContextExtension;
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 org.mockito.junit.jupiter.MockitoExtension;

import static org.junit.jupiter.api.Assertions.assertEquals;

@ExtendWith({AemContextExtension.class, MockitoExtension.class})
class AboutTest {

    private final AemContext aemContext = new AemContext();
    private About about;

    @BeforeEach
    void setUp() {
        aemContext.addModelsForClasses(About.class);
        aemContext.load().json("/com/rove/core/core/models/about.json", "/component");
        Resource resource = aemContext.currentResource("/component/about");
        about=aemContext.request().adaptTo(About.class);
    }

    @Test
    void testGetEmail() {
        final String expected = "abc@gmail.com";
        assertEquals(expected, about.getEmail());
    }

    @Test
    void testGetAddress() {
        final String expected = "India";
        assertEquals(expected, about.getAddress());
    }
}
 
Sling Model Code
package com.rove.core.core.models;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import javax.annotation.PostConstruct;
import javax.inject.Inject;
import javax.inject.Named;
import javax.jcr.Node;
import javax.jcr.RepositoryException;


import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolverFactory;
import org.apache.sling.models.annotations.Default;
import org.apache.sling.models.annotations.Model;
import org.apache.sling.models.annotations.Optional;
import org.apache.sling.models.annotations.Path;
import org.apache.sling.models.annotations.injectorspecific.ChildResource;
import org.apache.sling.models.annotations.injectorspecific.ResourcePath;
import org.apache.sling.models.annotations.injectorspecific.Self;
import org.apache.sling.models.annotations.injectorspecific.ValueMapValue;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@Model(adaptables = Resource.class)
public class About{
    private static final Logger LOGGER = LoggerFactory.getLogger(About.class);

    @Inject
    private String email;

    @Inject
    private String address;


    public String getEmail() {
        return email;
    }

    public String getAddress() {
        return address;
    }


}
Sanjay_Bangar
New Participant
April 26, 2022

Hi @prachi_mathur ,

Did you added  .json file in your test folder instead of core modal 

Kr,

Sanjay

Pallavi_Shukla_
New Participant
April 26, 2022

Hi @prachi_mathur 

I don't see the getDescription() method in your sling model. Seems to me either case of missing method or wrong naming convention in JUnit test cases.

 

Thanks,

Pallavi Shukla

New Participant
April 26, 2022

Sorry I post the wrong image of sling model this is the correct one