This commit introduces the TestClassScanner which scans provided classpath roots for Spring integration test classes using the JUnit Platform Launcher API which allows all registered TestEngines to discover tests according to their own rules. The scanner currently detects the following categories of Spring integration test classes. - JUnit Jupiter: classes that register the SpringExtension via @ExtendWith. - JUnit 4: classes that register the SpringJUnit4ClassRunner or SpringRunner via @RunWith. - Generic: classes that are annotated with @ContextConfiguration or @BootstrapWith. The scanner has been tested with the following TestEngine implementations for the JUnit Platform. - JUnit Jupiter - JUnit Vintage - JUnit Platform Suite Engine - TestNG Engine for the JUnit Platform Closes gh-28824
104 lines
4.4 KiB
Groovy
104 lines
4.4 KiB
Groovy
description = "Spring TestContext Framework"
|
|
|
|
apply plugin: "kotlin"
|
|
|
|
dependencies {
|
|
api(project(":spring-core"))
|
|
optional(project(":spring-aop"))
|
|
optional(project(":spring-beans"))
|
|
optional(project(":spring-context"))
|
|
optional(project(":spring-jdbc"))
|
|
optional(project(":spring-orm"))
|
|
optional(project(":spring-tx"))
|
|
optional(project(":spring-web"))
|
|
optional(project(":spring-webflux"))
|
|
optional(project(":spring-webmvc"))
|
|
optional(project(":spring-websocket"))
|
|
optional("jakarta.activation:jakarta.activation-api")
|
|
optional("jakarta.el:jakarta.el-api")
|
|
optional("jakarta.inject:jakarta.inject-api")
|
|
optional("jakarta.servlet:jakarta.servlet-api")
|
|
optional("jakarta.servlet.jsp:jakarta.servlet.jsp-api")
|
|
optional("jakarta.servlet.jsp.jstl:jakarta.servlet.jsp.jstl-api")
|
|
optional("jakarta.xml.bind:jakarta.xml.bind-api")
|
|
optional("jakarta.websocket:jakarta.websocket-api")
|
|
optional("junit:junit")
|
|
optional("org.apache.tomcat.embed:tomcat-embed-core")
|
|
optional("org.junit.platform:junit-platform-launcher") // for AOT processing
|
|
optional("org.junit.jupiter:junit-jupiter-api")
|
|
optional("org.testng:testng")
|
|
optional("org.aspectj:aspectjweaver")
|
|
optional("org.apache.groovy:groovy")
|
|
optional("org.hamcrest:hamcrest")
|
|
optional("net.sourceforge.htmlunit:htmlunit")
|
|
optional("org.seleniumhq.selenium:htmlunit-driver") {
|
|
exclude group: "net.bytebuddy", module: "byte-buddy"
|
|
}
|
|
optional("org.seleniumhq.selenium:selenium-java") {
|
|
exclude group: "net.bytebuddy", module: "byte-buddy"
|
|
}
|
|
optional("org.xmlunit:xmlunit-matchers")
|
|
optional("org.skyscreamer:jsonassert")
|
|
optional("com.jayway.jsonpath:json-path")
|
|
optional("org.jetbrains.kotlin:kotlin-reflect")
|
|
optional("org.jetbrains.kotlin:kotlin-stdlib")
|
|
optional("io.projectreactor:reactor-test")
|
|
optional("org.jetbrains.kotlinx:kotlinx-coroutines-core")
|
|
optional("org.jetbrains.kotlinx:kotlinx-coroutines-reactor")
|
|
testImplementation(project(":spring-context-support"))
|
|
testImplementation(project(":spring-oxm"))
|
|
testImplementation(testFixtures(project(":spring-beans")))
|
|
testImplementation(testFixtures(project(":spring-context")))
|
|
testImplementation(testFixtures(project(":spring-core")))
|
|
testImplementation(testFixtures(project(":spring-tx")))
|
|
testImplementation(testFixtures(project(":spring-web")))
|
|
testImplementation("jakarta.annotation:jakarta.annotation-api")
|
|
testImplementation("javax.cache:cache-api")
|
|
testImplementation("jakarta.ejb:jakarta.ejb-api")
|
|
testImplementation("jakarta.interceptor:jakarta.interceptor-api")
|
|
testImplementation("jakarta.mail:jakarta.mail-api")
|
|
testImplementation("org.hibernate:hibernate-core-jakarta")
|
|
testImplementation("org.hibernate:hibernate-validator")
|
|
testImplementation("jakarta.validation:jakarta.validation-api")
|
|
testImplementation("org.junit.platform:junit-platform-testkit")
|
|
testImplementation("com.fasterxml.jackson.core:jackson-databind")
|
|
testImplementation("com.thoughtworks.xstream:xstream")
|
|
testImplementation("com.rometools:rome")
|
|
testImplementation("org.hsqldb:hsqldb")
|
|
testImplementation("org.apache.httpcomponents:httpclient")
|
|
testImplementation("io.projectreactor.netty:reactor-netty-http")
|
|
testImplementation("de.bechte.junit:junit-hierarchicalcontextrunner")
|
|
testRuntimeOnly("org.junit.vintage:junit-vintage-engine") {
|
|
exclude group: "junit", module: "junit"
|
|
}
|
|
testRuntimeOnly("org.junit.support:testng-engine")
|
|
testRuntimeOnly("org.glassfish:jakarta.el")
|
|
testRuntimeOnly("com.sun.xml.bind:jaxb-core")
|
|
testRuntimeOnly("com.sun.xml.bind:jaxb-impl")
|
|
}
|
|
|
|
// Prevent xml-apis from being used so that the corresponding XML APIs from
|
|
// the JDK's `java.xml` module are used instead. This allows spring-test to
|
|
// build in Eclipse IDE which fails to compile if there is a split package
|
|
// between a JDK system module and the unnamed module (for JARs on the
|
|
// classpath).
|
|
configurations.optional {
|
|
exclude group: "xml-apis", module: "xml-apis"
|
|
}
|
|
|
|
test {
|
|
description = "Runs JUnit 4, JUnit Jupiter, and TestNG tests."
|
|
useJUnitPlatform {
|
|
includeEngines "junit-vintage", "junit-jupiter", "testng"
|
|
excludeTags "failing-test-case"
|
|
}
|
|
// We use `include` instead of `filter.includeTestsMatching`, since
|
|
// the latter results in some tests being executed/reported
|
|
// multiple times.
|
|
include(["**/*Tests.class", "**/*Test.class"])
|
|
filter.excludeTestsMatching("*TestCase")
|
|
systemProperty("testGroups", project.properties.get("testGroups"))
|
|
// Java Util Logging for the JUnit Platform.
|
|
// systemProperty("java.util.logging.manager", "org.apache.logging.log4j.jul.LogManager")
|
|
}
|