qa-unit-tests-jvm
JVM unit testing per-framework wrappers: 6 skills (assertj, junit5-tests, kotest-tests, scalatest, spock-tests, testng-tests) and 2 agents (jvm-framework-selector, jvm-test-author).
Install this plugin
/plugin install qa-unit-tests-jvm@testland-qaPart of role bundle: qa-role-sdet
qa-unit-tests-jvm
JVM unit testing per-framework wrappers. Five skills covering Java + Kotlin + Scala + Groovy test frameworks, plus one orchestrator that authors a single test per spec by detecting the framework convention from the project's build file.
Per-framework lifecycle scope. Does not duplicate qa-test-review (test code hygiene).
Components
| Type | Name | Description |
|---|---|---|
| Skill | junit5-tests | JUnit 5 (Jupiter); modern JVM standard; @Test/@ParameterizedTest/@RepeatedTest; extension model |
| Skill | kotest-tests | Kotlin-native; multi-style (StringSpec/FunSpec/BehaviorSpec); built-in property-based |
| Skill | spock-tests | Groovy BDD; given/when/then blocks; data tables; built-in mocking |
| Skill | testng-tests | Test method dependencies; groups; suite XML; legacy + Selenium-tradition |
| Skill | scalatest | Scala-native; multi-style (FlatSpec/FunSuite/WordSpec); ScalaCheck pairing |
| Agent | jvm-test-author | Authors one JVM unit test per spec; detects JUnit 5 / TestNG / Kotest / Spock / ScalaTest from pom.xml / build.gradle[.kts] / build.sbt; pairs with AssertJ when present |
| Agent | jvm-framework-selector | Reads pom.xml/build.gradle/build.sbt + language and recommends one JVM test framework (JUnit 5 / TestNG / Kotest / Spock / ScalaTest). |
| Skill | assertj | AssertJ fluent assertions for JVM tests: assertThat, collection/exception/soft assertions, recursive comparison, custom assertions. |
Install
/plugin marketplace add testland/qa
/plugin install qa-unit-tests-jvm@testland-qaSkills
assertj
Reference for AssertJ - the canonical JVM fluent-assertion library pairable with JUnit 5 / TestNG / Spock; covers the assertThat() entry point, collection matchers (contains, containsExactly, allSatisfy, extracting), exception assertions (assertThatThrownBy, catchThrowable), SoftAssertions for multi-failure collection, recursive comparison (usingRecursiveComparison) for deep equality, and domain-specific custom assertions via AbstractAssert. Use when writing JVM tests that need richer failure messages than built-in assertEquals, or when verifying complex object graphs, exception types, or collections.
junit5-tests
Configures and runs JUnit 5 (Jupiter) - modern JVM testing platform with annotations (`@Test` / `@ParameterizedTest` / `@RepeatedTest` / `@TestFactory`), lifecycle hooks (`@BeforeAll` / `@BeforeEach` / `@AfterEach` / `@AfterAll`), extension model (`@ExtendWith`), display names (`@DisplayName`), conditional execution (`@EnabledOnOs`, `@EnabledIf`), parallel execution config; integrates with Maven Surefire / Gradle test task / IntelliJ. Use when the user works with Java / Kotlin codebases needing the modern JVM standard.
kotest-tests
Configures and runs Kotest - Kotlin-native test framework with multiple specification styles (StringSpec, FunSpec, BehaviorSpec, DescribeSpec, ShouldSpec, FreeSpec, FeatureSpec, ExpectSpec, AnnotationSpec); rich matcher library; built-in property-based testing (alternative to jqwik); coroutines support; data-driven testing; isolation modes per-spec or per-test; integrates with Gradle JVM test task. Use when working with Kotlin and wanting Kotlin-idiomatic DSL over JUnit 5's annotation-driven approach. Matchers (shouldBe, shouldContain) are bundled with the runner and are not a drop-in replacement for a standalone JVM assertion library; for assertion-only use paired with JUnit 5 / TestNG / Spock see assertj.
scalatest
Configures and runs ScalaTest - Scala-native test framework with multiple specification styles (FlatSpec, FunSuite, WordSpec, FreeSpec, AsyncFlatSpec for async); Matchers DSL (`should equal`, `should contain`, `shouldBe a [Class]`); integrates with ScalaCheck for property-based testing; sbt + Maven + Gradle support; tagged-test selective execution. Use when working with Scala codebases.
spock-tests
Configures and runs Spock - Groovy-based JVM testing framework with given/when/then BDD blocks, where: data tables for parametrized tests, built-in mocking via Mock()/Stub()/Spy(), interaction-based testing (verify method calls in declarative DSL), implicit assertions in then: blocks. Use when working with Java/Kotlin codebases that benefit from Groovy DSL expressiveness, or maintaining existing Spock projects.
testng-tests
Configures and runs TestNG - JVM testing framework with `@Test` priorities + groups + `dependsOnMethods`; `@DataProvider` for parametrized tests with method-level data sources; `testng.xml` suite definitions for grouping + parallelism config; listeners (`ITestListener`, `ISuiteListener`) for hooks; `ITestContext` for cross-test state; integrates with Maven Surefire / Gradle. Use when working with legacy TestNG codebases or needing TestNG-specific features (test method dependencies, suite-level XML config).
Agents
jvm-framework-selector
Reads JVM project build files (`pom.xml` / `build.gradle` / `build.gradle.kts` / `build.sbt`) plus source language markers and recommends exactly one unit-test framework from the five preloaded skills: JUnit 5, Kotest, ScalaTest, Spock, or TestNG. Distinct from `jvm-test-author` (which authors tests once a framework is chosen) - this agent reads the actual build descriptor to detect existing convention before recommending. Use when starting a new JVM test project and the team has not committed to a framework, or when adding a test module to an existing multi-module build.
jvm-test-author
Action-taking agent that authors one JVM unit test file per spec - detects framework (JUnit 5 / TestNG / Kotest / Spock / ScalaTest) from the project's build file (`pom.xml`, `build.gradle[.kts]`, `build.sbt`), and pairs with AssertJ when present on the classpath. Distinct from `qa-shift-left/spec-to-suite-orchestrator` (language-agnostic multi-stage project-skeleton workflow) - narrower scope, single-file output, JVM languages (Java/Kotlin/Scala/Groovy) only. Sibling of the per-language authors in `qa-unit-tests-{net,js,python,go-rust}` and `qa-desktop/desktop-test-author`. Use when adding a single new JVM unit test to an existing test project.