Back to Repositories

Testing Multi-Database MongoDB Operations in spring-boot-examples

This test suite validates multi-database functionality in a Spring Boot MongoDB application. It demonstrates the configuration and interaction with two separate MongoDB instances, testing concurrent data operations and repository management.

Test Coverage Overview

The test coverage focuses on dual database operations using primary and secondary MongoDB repositories.

  • Tests user data persistence across two separate MongoDB instances
  • Validates repository autowiring and dependency injection
  • Verifies parallel data operations and retrieval
  • Ensures database isolation between primary and secondary stores

Implementation Analysis

The testing approach utilizes Spring Boot’s test framework with JUnit integration. It employs the @SpringBootTest annotation for full application context loading and @RunWith(SpringRunner.class) for Spring test execution.

The implementation demonstrates repository pattern usage with separate interfaces for primary and secondary databases, showcasing Spring’s multi-database configuration capabilities.

Technical Details

  • Spring Boot Test framework
  • JUnit 4 testing framework
  • MongoDB repositories with autowiring
  • SpringRunner test executor
  • User model with basic CRUD operations
  • System output logging for test verification

Best Practices Demonstrated

The test exhibits clean separation of concerns with distinct repository interfaces for different databases.

  • Proper dependency injection using @Autowired
  • Clear test method organization
  • Appropriate use of Spring Boot test annotations
  • Systematic data verification approach
  • Isolation of database operations

ityouknow/spring-boot-examples

2.x/spring-boot-mongodb/spring-boot-multi-mongodb/src/test/java/com/neo/repository/MuliDatabaseTest.java

            
package com.neo.repository;

import com.neo.model.User;
import com.neo.repository.primary.PrimaryRepository;
import com.neo.repository.secondary.SecondaryRepository;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.List;


@RunWith(SpringRunner.class)
@SpringBootTest
public class MuliDatabaseTest {

    @Autowired
    private PrimaryRepository primaryRepository;

    @Autowired
    private SecondaryRepository secondaryRepository;

    @Test
    public void TestSave() {
        System.out.println("************************************************************");
        System.out.println("测试开始");
        System.out.println("************************************************************");
        this.primaryRepository.save(new User("小张", "123456"));
        this.secondaryRepository.save(new User("小王", "654321"));
        List<User> primaries = this.primaryRepository.findAll();
        for (User primary : primaries) {
            System.out.println(primary.toString());
        }
        List<User> secondaries = this.secondaryRepository.findAll();
        for (User secondary : secondaries) {
            System.out.println(secondary.toString());
        }
        System.out.println("************************************************************");
        System.out.println("测试完成");
        System.out.println("************************************************************");
    }

}