Testing and Debugging

Testing

The go-events project is built with a robust testing suite to ensure code quality and stability. The testing infrastructure covers unit, integration, and end-to-end testing.

Unit Tests:

  • Unit tests focus on individual functions or methods, ensuring they work as intended.
  • Located within the *_test.go files within each package.
  • Run the tests with go test -v in the root directory.

Example:

// test/event_test.go
          func TestNewEvent(t *testing.T) {
            // ... Test code for NewEvent function
          }
          

Integration Tests:

  • Integration tests verify interactions between components.
  • Located in the test/integration directory.
  • Run tests with go test -v ./test/integration/...

Example:

// test/integration/handler_test.go
          func TestHandler(t *testing.T) {
            // ... Test code for Handler integration with Event
          }
          

End-to-End Tests:

  • End-to-end tests simulate real-world scenarios.
  • Located in the test/e2e directory.
  • Run with go test -v ./test/e2e/...

Example:

// test/e2e/event_test.go
          func TestEventLifecycle(t *testing.T) {
            // ... Test code simulating event lifecycle 
          }
          

Debugging

Debugging Tools:

  • go test -v -run=TestName: Runs specific tests.
  • go test -cover: Generates coverage reports.
  • go test -v -coverprofile=coverage.out: Creates a coverage profile.
  • go tool cover -html=coverage.out: Visualizes the coverage profile in a web browser.
  • go build -race: Enables data race detection during runtime.
  • go test -race: Runs tests with data race detection enabled.
  • go test -p 1: Run tests in parallel.

Example:

# Run a specific test
          go test -v -run=TestNewEvent
          
          # Generate a coverage report
          go test -cover
          
          # Create a coverage profile
          go test -v -coverprofile=coverage.out
          
          # Visualize coverage profile
          go tool cover -html=coverage.out
          
          # Enable data race detection 
          go test -race
          

Logging:

  • Debug Logging: go-events utilizes logrus for logging.
  • Enable debug logging through environment variables.
  • Consult the logrus documentation for configuration options.

Reference: