AspectJ based JUnit 4 integration for Gradle test execution.
Use this module for Gradle projects that run JUnit 4 tests with Gradle's built-in runner and cannot register a JUnit 4 RunListener directly.
- Allure Java 3.x requires Java 17 or newer.
- This module targets JUnit 4 and delegates reporting to
allure-junit4. - The current build validates against JUnit 4.13.2 and AspectJ 1.9.25.1.
Gradle:
val aspectjAgent by configurations.creating
dependencies {
testImplementation(platform("io.qameta.allure:allure-bom:<allure-version>"))
testImplementation("io.qameta.allure:allure-junit4-aspect")
testRuntimeOnly("org.aspectj:aspectjrt:<aspectj-version>")
aspectjAgent("org.aspectj:aspectjweaver:<aspectj-version>")
}
tasks.test {
useJUnit()
doFirst {
jvmArgs("-javaagent:${aspectjAgent.singleFile}")
}
}Maven users normally use allure-junit4 with a listener-capable test runner. Use this AspectJ artifact only when you specifically need weaving-based listener registration.
Enable the AspectJ weaver for the test JVM. The aspects add the Allure JUnit 4 listener to RunNotifier and apply the Allure JUnit 4 test-plan filter during JUnit 4 execution.
If your runner already lets you register AllureJunit4 directly, prefer allure-junit4.
- The same JUnit 4 tests, assumptions, ignored tests, labels, links, and failures reported by
allure-junit4. - Automatic listener registration for Gradle's built-in JUnit 4 test task.
- Test-plan filtering without manual JUnit 4 runner wiring.
For large test classpaths, consider an AspectJ META-INF/aop.xml that limits weaving to Allure, JUnit, and your test packages.