Skip to content

anabelenp/DatabaseTestingFramework

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Database Testing Framework

A minimal Java framework for testing database operations with support for PostgreSQL, MySQL, and MongoDB using Testcontainers.

Features

  • Multi-database support: PostgreSQL, MySQL, MongoDB
  • Transaction management: Automatic rollback for test isolation
  • Test data seeding: DBUnit integration for test data setup
  • Database migrations: Flyway support for schema management
  • Microservice integration: REST API testing with database validation
  • Parallel execution: Thread-safe test execution
  • Container management: Testcontainers for isolated test environments

Quick Start

1. Extend BaseDbTest

public class MyDatabaseTest extends BaseDbTest {
    @Override
    protected DatabaseType getDatabaseType() {
        return DatabaseType.POSTGRESQL;
    }

    @Override
    protected String getTestDataPath() {
        return "test-data/my-data.xml";
    }

    @Test
    public void testCrudOperations() throws Exception {
        UserDao dao = new UserDao(connection);
        User user = dao.create(new User("Test", "test@example.com"));
        assertNotNull(user.getId());
    }
}

2. Create Test Data (XML)

<?xml version="1.0" encoding="UTF-8"?>
<dataset>
    <users id="1" name="Test User" email="test@example.com"/>
</dataset>

3. Run Tests

With Docker (Full Framework):

mvn test

Without Docker (In-Memory Testing):

mvn test -Dtest=InMemoryUserTest

Architecture

[TestNG Tests] --> [BaseDbTest] --> [DatabaseContainer] --> [Database]
       |                |
[TestDataManager] --> [DBUnit]
       |
[FlywayMigrator] --> [Migrations]

Key Classes

  • BaseDbTest: Base class with setup/teardown and transaction management
  • DatabaseContainer: Testcontainers wrapper for different DB types
  • TestDataManager: DBUnit integration for test data seeding/cleanup
  • UserDao: Example DAO demonstrating CRUD operations

Test Examples

  • PostgreSQLUserTest: Basic CRUD operations
  • MySQLUserTest: Transaction rollback testing
  • MicroserviceIntegrationTest: API + database integration
  • ParallelExecutionTest: Concurrent execution testing
  • InMemoryUserTest: H2 in-memory testing (no Docker required)

Docker Setup

Required for Testcontainers:

  1. Install Docker Desktop: https://www.docker.com/products/docker-desktop/
  2. Start Docker Desktop
  3. Verify: docker --version

Alternative (No Docker):

  • Use InMemoryUserTest with H2 database
  • Run: mvn test -Dtest=InMemoryUserTest

Configuration

Tests run with automatic:

  • Database container startup/shutdown
  • Schema migration via Flyway
  • Test data seeding via DBUnit
  • Transaction rollback after each test
  • Parallel execution (4 threads)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages