Back to Repositories

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

This test suite validates the functionality of multiple MongoDB database configurations in a Spring Boot application. It demonstrates the simultaneous use of primary and secondary MongoDB repositories for user data management and persistence operations.

Test Coverage Overview

The test suite covers dual database operations with MongoDB in Spring Boot.

Key areas tested include:
  • User data persistence in primary database
  • User data persistence in secondary database
  • Retrieval operations from both databases
  • Concurrent database operations

Implementation Analysis

The testing approach utilizes Spring Boot’s test framework with JUnit integration. It implements @RunWith(SpringRunner.class) and @SpringBootTest annotations for proper Spring context loading.

The test demonstrates repository pattern implementation with:
  • Autowired dependency injection of repositories
  • Separate repository interfaces for primary and secondary databases
  • Sequential save and retrieve operations

Technical Details

Testing infrastructure includes:
  • JUnit 4 testing framework
  • Spring Boot Test context
  • MongoDB repositories configuration
  • User model implementation
  • Automated test execution with SpringRunner

Best Practices Demonstrated

The test implementation showcases several testing best practices:

  • Clear separation of concerns between primary and secondary repositories
  • Proper Spring Boot test configuration
  • Structured test method organization
  • Comprehensive database operation verification
  • Clear test execution logging

ityouknow/spring-boot-examples

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("************************************************************");
    }

}