An explicit, clean, and beautiful test formatter for Maven's test runner
Sophodromos is a simple Maven plugin that formats test output in a clean, readable style inspired by GradlDromus. It runs your tests using Maven Surefire and provides colorized, progress-based output that's easy to read and understand.
Add the plugin to your project's pom.xml
:
<plugin>
<groupId>io.github.clojang</groupId>
<artifactId>sophodromos</artifactId>
<version>0.1.8</version>
</plugin>
Run tests with sophodromos formatting:
mvn sd:test
To avoid running tests twice (Maven's default tests + sophodromos), use:
mvn compile sd:test
# or
mvn install -Dmaven.test.skip=true sd:test
================================================================================
SophoDromos Test Runner (version: 0.1.8)
--------------------------------------------------------------------------------
my-project
SimpleTest.testAddition() ..................................................π (2ms)
SimpleTest.testSubtraction() ...............................................π
SimpleTest.testMultiplication() ...........................................π
AnotherTests.testDivision() ................................................π
AnotherTests.testModulo() ..................................................π
Test Summary:
βββββββββββββ
Total: 5 tests, π 5 passed, π 0 failed, π€ 0 skipped
Time: 0.0s
β¨ All tests passed!
================================================================================
This plugin works with multi-module projects, too. If you want to only run tests for a specific module, you can use:
mvn sd:test -pl modules/my-module -Dmaven.test.skip=true
If your doesn't use the standard modules
and uses a flat structure, you can run:
mvn sd:test -pl my-module -Dmaven.test.skip=true
Configure the plugin in your pom.xml
:
<plugin>
<groupId>io.github.clojang</groupId>
<artifactId>sophodromos</artifactId>
<version>0.1.8</version>
<configuration>
<!-- Display options -->
<showModuleNames>true</showModuleNames>
<showMethodNames>true</showMethodNames>
<showTimings>true</showTimings>
<useColors>true</useColors>
<!-- Terminal settings -->
<terminalWidth>0</terminalWidth>
<suppressOutput>false</suppressOutput>
<!-- Custom status symbols -->
<passSymbol>π</passSymbol>
<failSymbol>π</failSymbol>
<skipSymbol>π€</skipSymbol>
<!-- Legacy options (still supported) -->
<colorOutput>true</colorOutput>
<showProgress>true</showProgress>
<detailedFailures>true</detailedFailures>
<skipTests>false</skipTests>
</configuration>
</plugin>
You can also configure options via system properties:
# Display control
mvn sd:test -Dsophodromos.showModuleNames=false
mvn sd:test -Dsophodromos.showMethodNames=false
mvn sd:test -Dsophodromos.showTimings=false
mvn sd:test -Dsophodromos.useColors=false
# Custom symbols
mvn sd:test -Dsophodromos.passSymbol=β
mvn sd:test -Dsophodromos.failSymbol=β
mvn sd:test -Dsophodromos.skipSymbol=βοΈ
# Terminal settings
mvn sd:test -Dsophodromos.terminalWidth=120
# Legacy options
mvn sd:test -Dsophodromos.colorOutput=false
mvn sd:test -Dsophodromos.showProgress=false
mvn sd:test -Dsophodromos.detailedFailures=false
mvn sd:test -Dsophodromos.skip=true
Option | Type | Default | Description |
---|---|---|---|
Display Options | |||
showModuleNames |
boolean | true |
Show module/project names in output |
showMethodNames |
boolean | true |
Show individual test method names during execution |
showTimings |
boolean | true |
Show execution times for tests |
useColors |
boolean | true |
Enable colorized output |
Terminal Settings | |||
terminalWidth |
int | 0 |
Override terminal width detection (0 = auto-detect) |
suppressOutput |
boolean | false |
Suppress Maven's default test output |
Custom Symbols | |||
passSymbol |
String | π |
Symbol for passed tests |
failSymbol |
String | π |
Symbol for failed tests |
skipSymbol |
String | π€ |
Symbol for skipped tests |
Legacy Options | |||
colorOutput |
boolean | true |
Enable colored output (same as useColors ) |
showProgress |
boolean | true |
Show test progress (same as showMethodNames ) |
detailedFailures |
boolean | true |
Show detailed failure information when tests fail |
skipTests |
boolean | false |
Skip running tests entirely |
Sophodromos works with all Maven project structures:
- Single-module projects: Standard
src/test/java
layout - Multi-module projects: Runs tests for each module separately
- Traditional layouts: Any Maven-compatible test structure
- Clean Output: Beautiful, readable test formatting
- Color Support: Green checkmarks for passed tests, red X's for failures
- Progress Indicators: See tests as they run
- Timing Information: Shows execution time for individual tests
- Multi-module Support: Works seamlessly with Maven reactor builds
- Surefire Integration: Uses Maven Surefire under the hood
- Java: 17+
- Maven: 3.8+
git clone https://github.com/clojang/sophodromos.git
cd sophodromos
mvn clean install
# Run sophodromos's own tests
make test
# Test in example projects
cd test-projects/single-module && make test
cd test-projects/multi-module && mvn sd:test
- Edit source code in
src/main/java/io/github/clojang/sophodromos/
- Build with
mvn clean install
- Test with example projects
Found a bug or have a feature request? Please open an issue on GitHub!
Sophodromos was created to bring clean, readable test output to Maven projects. While Gradle has excellent test formatters like GradlDromus, Maven's default output can be verbose and hard to parse. Sophodromos fills this gap by providing a simple, focused test formatter.
The name combines the Greek words "sophos" (wise) and "dromos" (running/course), reflecting the project's goal of bringing wisdom to test execution.
This library is part of the Clojang ecosystem:
- gradldromus - Clean test output formatting for Gradle
Β© 2025, Clojang. All rights reserved.
Licensed under the Apache License, Version 2.0. See LICENSE
file for details.
Made with π by developers who believe testing should be beautiful