Skip to content

Running Tests

This guide explains how to execute tests locally and in the CI/CD pipeline.

Prerequisites

  • Java 17 (OpenJDK or Oracle JDK)
  • Node.js 20.18.0
  • Yarn 4.5.0
  • Maven 3.6+

Local Test Execution

Backend Tests

Run all Java unit tests:

mvn test

Run specific test class:

mvn test -Dtest=IssueReporterTest

Note: The project does NOT have JaCoCo configured. Coverage reports are not generated by Maven.

Frontend Tests

Run all JavaScript tests:

yarn test

Run tests with coverage (default behavior):

yarn test

Run tests without watch mode:

yarn test --watchAll=false

Run specific test file:

yarn test DetailedDescription.test.js

Note: The test script automatically includes --coverage flag and runs in watch mode unless CI environment is detected.

Combined Test Execution

Run all tests (backend + frontend):

mvn test && yarn test --watchAll=false

CI/CD Pipeline Testing

The automated testing pipeline runs on every push and pull request:

Test Jobs

  1. backend-test: Executes Maven tests (no coverage)
  2. frontend-test: Runs Jest tests with coverage
  3. security-scan: OWASP dependency vulnerability analysis
  4. sonarqube-analysis: Code quality analysis

Pipeline Triggers

  • Push to main: Full test suite + SonarQube analysis
  • Pull Request: Full test suite + SonarQube analysis
  • Manual: Can be triggered via GitHub Actions interface

Test Reports

Coverage Reports

  • Backend: No coverage reports (JaCoCo not configured)
  • Frontend: Coverage reports in target/coverage/
  • SonarQube: Integrated coverage analysis

Test Results

  • JUnit: XML reports in target/surefire-reports/
  • Jest: Coverage reports in target/coverage/
  • OWASP: HTML reports in reports/

Current Test Classes

Backend Tests (9 classes)

  • DeconstructedCCMessageTest
  • IssueReporterTest
  • LocaterUtilsTest
  • SarifDeserializationTest
  • GradleGeneratorTest
  • JarGeneratorTest
  • MavenGeneratorTest
  • ReportServiceTest
  • ResourceServiceTest

Frontend Tests (4 classes)

  • DetailedDescription.test.js
  • DetailedFix.test.js
  • IssueList.test.js
  • NavigationBar.test.js

Debugging Failed Tests

Backend Test Failures

  1. Check Maven Surefire reports:

    cat target/surefire-reports/TEST-*.xml
    

  2. Run with debug output:

    mvn test -X -Dtest=FailingTest
    

Frontend Test Failures

  1. Run Jest in verbose mode:

    yarn test --verbose
    

  2. Debug specific test:

    yarn test --testNamePattern="failing test name"
    

Performance Considerations

  • Backend: Maven Surefire uses default configuration (no parallel execution configured)
  • Test Isolation: Each test class runs independently
  • Resource Management: Tests use temporary directories and cleanup automatically
  • Frontend: Jest runs with coverage by default via custom test script