Back to Repositories

Validating Server Port Configuration Tests in Stirling-PDF

This test suite validates core functionality of the SPDFApplication class, focusing on server port configuration and management. The tests ensure proper initialization and manipulation of both static and non-static port settings within the Stirling-PDF application.

Test Coverage Overview

The test suite provides comprehensive coverage of port management functionality in SPDFApplication.

Key areas tested include:
  • Static port setting and retrieval
  • Non-static port access
  • Port initialization during setup
Integration points with Spring Environment and ApplicationProperties are properly mocked to isolate the test scope.

Implementation Analysis

The testing approach utilizes JUnit 5 with Mockito extension for dependency management. The implementation follows AAA (Arrange-Act-Assert) pattern with clear test method organization and MockitoExtension for automatic mock initialization.

Framework-specific features leveraged include:
  • @ExtendWith for Mockito integration
  • @Mock for dependency injection
  • @BeforeEach for test initialization

Technical Details

Testing stack includes:
  • JUnit Jupiter (JUnit 5)
  • Mockito for mocking
  • Spring Test framework integration
Configuration includes:
  • MockitoExtension for automated mock handling
  • Environment and ApplicationProperties mocks
  • Predefined port settings for consistent testing

Best Practices Demonstrated

The test suite exemplifies several testing best practices including proper test isolation, clear method naming, and focused test scope. Each test method validates a single specific functionality with clear assertions.

Notable practices include:
  • Proper mock initialization and injection
  • Consistent test setup using @BeforeEach
  • Clear separation of concerns between tests
  • Focused test methods with single responsibility

stirling-tools/stirling-pdf

src/test/java/stirling/software/SPDF/SPDFApplicationTest.java

            
package stirling.software.SPDF;

import static org.junit.jupiter.api.Assertions.*;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.core.env.Environment;

import stirling.software.SPDF.model.ApplicationProperties;
import static java.nio.file.Files.createDirectories;
import static java.nio.file.Files.createFile;
import static java.nio.file.Files.delete;
import static java.nio.file.Files.exists;

@ExtendWith(MockitoExtension.class)
public class SPDFApplicationTest {

    @Mock
    private Environment env;

    @Mock
    private ApplicationProperties applicationProperties;

    @InjectMocks
    private SPDFApplication SPDFApplication;

    @BeforeEach
    public void setUp() {
        SPDFApplication.setServerPortStatic("8080");
    }

    @Test
    public void testSetServerPortStatic() {
        SPDFApplication.setServerPortStatic("9090");
        assertEquals("9090", SPDFApplication.getStaticPort());
    }

    @Test
    public void testGetStaticPort() {
        assertEquals("8080", SPDFApplication.getStaticPort());
    }

    @Test
    public void testGetNonStaticPort() {
        assertEquals("8080", SPDFApplication.getNonStaticPort());
    }
}