Search code examples
javaspring-bootspring-mvcjunitjunit5

Getting java.lang.NoClassDefFoundError Exception while using MockMvcBuilders.standaloneSetup() method in Junit 5


Below is my Test class that I have created for Controller class.

My Testclass is in package src/test/java and my java classes are in folder src/main/java.

public class MyControllerTest {
    @InjectMocks
    private MyController myController;

    @Mock
    private MyCommonService myCommonService;

    private MockMvc mockMvc;

    @BeforeEach
    public void setup() {
        MockitoAnnotations.openMocks(this);
        mockMvc = MockMvcBuilders.standaloneSetup
                (new MyCommonServiceController()).build();
    }
 @Test
    public void testDataReturnsOk() throws Exception {
        when(myCommonService.getData())
                .thenReturn(Collections.singletonList(new myDto()));

        mockMvc.perform(get("/data"))
                .andExpect(status().isOk());
    }
}

I am getting below error while executing my Test class.

java.lang.NoClassDefFoundError: jakarta/servlet/ServletException

    at org.springframework.test.web.servlet.setup.MockMvcBuilders.standaloneSetup(MockMvcBuilders.java:76)
    at com.markitclear.cui.cp.rest.controller.CPCommonServiceControllerTest.setup(CPCommonServiceControllerTest.java:36)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
    at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)

Solution

  • I was getting Class not found exception because tomcat jar was missing.

    <dependency>
                <artifactId>tomcat-embed-core</artifactId>
                <groupId>org.apache.tomcat.embed</groupId>
                <version>${tomcatVersion}</version>
            </dependency>