Transform your test reporting experience - realtime + easy analytics!
Connect your Java tests directly to Testomat.io with minimal setup and maximum insight.
-
Add dependency to your
pom.xml
with classifier to align your test framework:<dependency> <groupId>io.testomat</groupId> <artifactId>java-reporter-distribution</artifactId> <version>0.6.53</version> <classifier>junit</classifier> </dependency>
By now supported frameworks are:
- Junit5
- TestNG
- Cucumber
(use lowercase in the classifier tag)
-
Get your API key from Testomat.io (starts with
tstmt_
) -
Set your API key as environment variable:
export testomatio.api.key=tstmt_your_key_here
**Or create the
testomatio.properties file
and set it there. -
Run your tests - that's it! ๐
This is the official Java reporter for Testomat.io - a powerful test management platform. It automatically sends your test results to the cloud, giving you beautiful reports, analytics, and team collaboration features.
- โ Zero configuration for the beginning
- โ Works with your existing tests (JUnit, TestNG, Cucumber)
- โ Team collaboration with shared reports
- โ Historical tracking of test trends
- โ Public shareable reports for stakeholders
๐ง Actively developed - New features added regularly!
- โ Complete framework integration - JUnit5, TestNG, and Cucumber support.
- โ Automatic test discovery - Zero-config test detection and reporting.
- โ Customizable run parameters - Full control over test run configuration.
- โ Async test processing - High-performance parallel result processing.
- โ Advanced customization - Override core classes for custom behavior.
- โ Test run grouping - Organize and merge related test runs.
- โ Team collaboration - Shared runs and real-time reporting.
- โ Enhanced error reporting - Stack traces and failure analysis.
- โ Method body export - See test method body in UI for much convenient analysis.
- โณ Test ID importing - Ability to annotate your tests with IDs right in test classes
- โณ Test artifacts support - Screenshots, logs, and file attachments
- โณ Step-by-step reporting - Detailed test step execution tracking
- โณ Integration hooks - Pre/post test execution callbacks
- โณ Advanced filtering - Custom test selection and reporting rules
What you need | Version | We tested with |
---|---|---|
โ Java | 11 or newer | All versions |
๐งช JUnit | 5.x | 5.9.2 |
๐งช TestNG | 7.x | 7.7.1 |
๐ฅ Cucumber | 7.x | 7.14.0 |
- jackson-annotations 2.16.0
- jackson-core 2.16.0
- jackson-databind 2.16.0
- javaparser-core 3.27.0
- slf4j-api 2.0.9
<dependency>
<groupId>io.testomat</groupId>
<artifactId>java-reporter-distribution</artifactId>
<version>0.6.53</version>
<classifier>xxx</classifier>
</dependency>
For Junit and TestNG - in the
main/resources
in the filetestomatio.properties
add line:testomatio.listening=true
delete
true
or the whole property to disable listening.
This gets you running in under 2 minutes.
Step 1: Create file src/main/resources/junit-platform.properties
Step 2: Add this single line:
junit.jupiter.extensions.autodetection.enabled = true
Step 3: Run your tests with API key:
mvn test -Dtestomatio.api.key=tstmt_your_key_here
That's it! โจ Your tests now report to Testomat.io automatically.
Step 1: Add our listener to your test runner:
@RunWith(Cucumber.class)
@CucumberOptions(
features = "src/test/resources/features",
glue = {"steps"},
plugin = {
"pretty",
"json:target/cucumber-reports/",
"html:target/cucumber-reports/",
"io.testomat.cucumber.listener.CucumberListener" // ๐ Add this line
}
)
public class TestRunner {
}
Step 2: Run with your API key:
mvn test -Dtestomatio.api.key=tstmt_your_key_here
Good news! TestNG works automatically - just add your API key when running tests:
mvn test -Dtestomatio.api.key=tstmt_your_key_here
โ ๏ธ Only use this if you need custom behavior - like adding extra logic to test lifecycle events.
This lets you customize how the reporter works by overriding core classes:
CucumberListener
- Controls Cucumber test reportingTestNgListener
- Controls TestNG test reportingJunitListener
- Controls JUnit test reporting
- Adding custom API calls during test execution
- Integrating with other tools
- Custom test result processing
- Advanced filtering or modification of results
Step 1: Complete the Simple Setup first (except for Cucumber-only projects)
Step 2: Create the services directory:
๐ src/main/resources/META-INF/services/
Step 3: Create the right configuration file:
Framework | Create this file: |
---|---|
JUnit 5 | org.junit.jupiter.api.extension.Extension |
TestNG | org.testng.ITestNGListener io.cucumber.plugin.Plugin |
Cucumber | io.cucumber.plugin.Plugin |
Step 4: Add your custom class path to the file:
com.yourcompany.yourproject.CustomListener
Step 5: For Cucumber, update your TestRunner to use your custom class instead of ours.
public class CustomCucumberListener extends CucumberListener {
@Override
public void onTestStart(TestCase loaderTestCase) {
// Your custom logic here
super.onTestStart(loaderTestCase);
// More custom logic
}
}
# Your Testomat.io project API key (find it in your project settings)
testomatio.api.key=tstmt_your_key_here
Make your test runs exactly how you want them:
Setting | What it does | Default | Example |
---|---|---|---|
testomatio.run.title |
Custom name for your test run | default_run_title |
"Nightly Regression Tests" |
testomatio.env |
Environment name (dev, staging, prod) | (none) | "staging" |
testomatio.run.group |
Group related runs together | (none) | "sprint-23" |
testomatio.publish |
Make results publicly shareable | (private) | 1 |
Setting | What it does | Example |
---|---|---|
testomatio.url |
Custom Testomat.io URL (for enterprise) | https://app.testomat.io/ |
testomatio.run.id |
Add results to existing run | "run_abc123" |
testomatio.create |
Auto-create missing tests in Testomat.io | true |
testomatio.shared.run |
Shared run name for team collaboration | "team-integration-tests" |
testomatio.shared.run.timeout |
How long to wait for shared run | 3600 |
Connect your code tests directly to your Testomat.io test cases using simple annotations!
Use @TestId
and @Title
annotations to make your tests perfectly trackable:
import com.testomatio.reporter.annotation.TestId;
import com.testomatio.reporter.annotation.Title;
public class LoginTests {
@Test
@TestId("auth-001")
@Title("User can login with valid credentials")
public void testValidLogin() {
// Your test code here
}
@Test
@TestId("auth-002")
@Title("Login fails with invalid password")
public void testInvalidPassword() {
// Your test code here
}
@Test
@Title("User sees helpful error message") // Just title, auto-generated ID
public void testErrorMessage() {
// Your test code here
}
}
Use tags to identify your scenarios:
Feature: User Authentication
@TestId:auth-001
Scenario: Valid user login
Given user is on login page
When user enters valid credentials
Then user should be logged in successfully
@TestId:auth-002
Scenario: Invalid password login
Given user is on login page
When user enters invalid password
Then login should fail
@TestId:auth-003
Scenario: Error message display
Given user is on login page
When login fails
Then error message should be displayed
- @TestId: Links your code test to specific test case in Testomat.io
Result: Your Testomat.io dashboard shows exactly which tests ran, with clear titles and perfect traceability! ๐ฏ
# Simple run with custom title
mvn test \
-Dtestomatio.api.key=tstmt_your_key \
-Dtestomatio.run.title="My Feature Tests"
# Shared run that team members can contribute to
mvn test \
-Dtestomatio.api.key=tstmt_your_key \
-Dtestomatio.shared.run="integration-tests" \
-Dtestomatio.env="staging"
# Public report for sharing with stakeholders
mvn test \
-Dtestomatio.api.key=tstmt_your_key \
-Dtestomatio.run.title="Demo for Product Team" \
-Dtestomatio.publish=1
When your tests start running, you'll see helpful output like this:
You get two types of links:
- ๐ Private Link: Full access on Testomat.io platform (for your team)
- ๐ Public Link: Shareable read-only view (only if you set
testomatio.publish=1
)
And the dashboard - something like this:
You can turn on the method exporting from your code to the Testomat.io platform by adding
testomatio.export.required=true
- Check your API key - it should start with
tstmt_
- Verify internet connection - the reporter needs to reach
app.testomat.io
- Check test names - make sure they match your Testomat.io project structure
- Enable auto-creation - add
-Dtestomatio.create=true
to create missing tests
- JUnit 5: Make sure
junit-platform.properties
exists with autodetection enabled - Cucumber: Verify the listener is in your
@CucumberOptions
plugins - TestNG: Should work automatically if nothing is overridden - check your TestNG version (need 7.x)
- Explore Testomat.io features: Analytics, team reports
- Try advanced features: Test case management, requirements tracing
- Join the community: Documentation โข Support
๐ Love this tool? Star the repo and share with your team!