Integration Testing in Java

Spring Boot Integration Testing with MockMvc

Learning Outcome

6

Validate responses using assertions , Run integration tests using Maven

5

Work with MockMvc

4

Use Spring Boot testing annotations

3

Differentiate unit vs integration testing

2

Learn its purpose and importance

1

Understand integration testing

 Analogy

Imagine Online Food Delivery System

Restaurant prepares food

Delivery partner picks it up

App updates order status

If each part works alone but not together → order fails

With proper integration testing:

All components communicate correctly

Order flows smoothly

Customer gets food on time

Same in Software:

  • Unit tests → check individual parts
     

  • Integration tests → check parts working together
     

  • Result → reliable end-to-end flow

 

 Best Practices for Integration Testing

Test real component interaction

Avoid over-mocking

Keep tests independent

Use realistic test data

Run tests in CI/CD pipeline

Golden Rule:

Test behavior, not implementation.

Unit Testing vs Integration Testing

Unit Testing

  • Tests single unit
     

  • Fast
     

  • Highly isolated
     

  • Uses mocks heavily

Integration Testing

  • Tests module interaction
     

  • Slower
     

  • More realistic
     

  • Uses real components

@SpringBootTest

@SpringBootTest:

Loads full Spring application context

Used for integration testing

Enables end-to-end testing

Use when:

You want full application testing.

@ExtendWith(SpringExtension.class)

Purpose:

Integrates Spring TestContext with JUnit 5

Enables Spring features in testsa

Key Benefit:

Allows dependency injection in test classes

@MockBean

@MockBean is used to:

Create mock object inside Spring context

Replace real bean with mock

Use when:

You want to isolate external dependencies

What is MockMvc

MockMvc:

Tests Spring MVC controllers
 

Simulates HTTP requests
 

No need to start real server

Advantage:

Fast

Lightweight

Controller-focused testing

Important MockMvc Methods

perform()

Sends mock HTTP request

andExpect()

Verifies response

andDo()

Performs additional actions (like logging)

Assertion Methods

Common assertions in integration testing:

isOK()

jsonPath()

assertThat(result.getContent()).hasSize(100)

Purpose:

Validate API responses

Running Integration Tests

Command to run tests:

./mvnw test

What happens:

  • Maven executes all test cases
     

  • Generates test report
     

  • Shows pass/fail status

Summary

4

Assertions verify API responses , Use ./mvnw test to execute tests

3

@MockBean helps isolate dependencies , MockMvc tests REST controllers efficiently

2

@SpringBootTest loads full Spring context

1

Integration testing validates module interaction

Quiz

@SpringBootTest is used to:

A. Load full application context

B. Compile project

C. Deploy app

D. Format code

Quiz-Answer

@SpringBootTest is used to:

A. Load full application context

B. Compile project

C. Deploy app

D. Format code