Unit Testing

JUnit Categories

net.ggtools.junit : junit-categories

A (small) collection of categories to use with the JUnit 4 @Category annotation.

Last Version: 1.0

Release Date:

Last Version: 3.4.2

Release Date:

Last Version: 1.6.6

Release Date:

Cuppa

org.forgerock.cuppa : cuppa-junit

Cuppa - A testing framework for Java 8

Last Version: 1.6.0

Release Date:

karate-junit4

com.intuit.karate : karate-junit4

Test Automation Made Simple

Last Version: 1.2.1.RC2

Release Date:

org.eclipse.jdt.junit

com.github.adedayo.eclipse.sdk : org.eclipse.jdt.junit

A packaging of the eclipse sdk org.eclipse.jdt.junit library.

Last Version: 3.9.0

Release Date:

classpath-junit-extension

com.github.fridujo : classpath-junit-extension

JUnit5 extension to run tests with classpath customizations

Last Version: 1.0.0

Release Date:

powermock-release-with-junit-easymock-dependencies

org.powermock : powermock-release-with-junit-easymock-dependencies

Single jar containing binaries for PowerMock core, JUnit and EasyMock modules.

Last Version: 1.6.2

Release Date:

junit-drools

com.github.jeichler : junit-drools

library for unit-testing drools rules

Last Version: 1.0

Release Date:

Last Version: 0.5.1

Release Date:

mnemonic commons - junit docker

no.mnemonic.commons : junit-docker

JUnit resources to use Docker containers during integration tests

Last Version: 0.4.12

Release Date:

lambspec-junit

com.pholser : lambspec-junit

Assertion library for Java >= 8: JUnit functionality

Last Version: 1.0

Release Date:

Last Version: 1.0-hudson-20120704

Release Date:

Schema.org Java

org.qjson : junit.md

write junit test in markdown

Last Version: 1.0.4

Release Date:

JUnit 5 Integration with Qase TMS

io.qase : qase-junit5

Java Libraries for the Qase TMS integration

Last Version: 2.1.3

Release Date:

Last Version: 1.0.6

Release Date:

step-junit

ch.exense.step : step-junit

step is the first open-source automation platform for unified agile testing.

Last Version: 3.19.0

Release Date:

not-so-plugin-junit4

io.github.Ethan0507 : not-so-plugin-junit4

A useless webdriver-framework-junit4

Last Version: 0.0.3

Release Date:

Last Version: 1.6.6

Release Date:

spring-esdata-loader-junit4

com.github.tinesoft : spring-esdata-loader-junit4

Set of JUnit Rules & Extensions to easily load data to test your spring-data elasticsearch-based projects

Last Version: 1.1.0

Release Date:

Last Version: 1.0.1

Release Date:

Selenium Junit 4 Runner

com.btmatthews.selenium.junit4 : selenium-junit4-runner

Annotations to simplify the use of Selenium in JUnit 4 tests

Last Version: 1.0.6

Release Date:

JUnited :: Quarantined Classloaders

com.crosstreelabs : junited.quarantine

Facilitates testing with separate classloaders, and modifying those classloaders.

Last Version: 0.1.0

Release Date:

Last Version: 0.4.0

Release Date:

Last Version: 3.1.2.0

Release Date:

WildFly: Arquillian JUnit 5 Integration Tests

org.wildfly.arquillian : junit5-tests

Provides, via submodules, a base configuration for JBoss project builds, as well as a derived configuration supporting multi-release JARs

Last Version: 5.0.0.Alpha3

Release Date:

serenity-junit-screenplay-archetype

net.serenity-bdd : serenity-junit-screenplay-archetype

Serenity automated acceptance testing project using Screenplay, Selenium 2 and JUnit

Last Version: 2.3.2

Release Date:

net.ranides:assira.junit

net.ranides : assira.junit

assira: general purpose java library: junit support

Last Version: 2.8.2

Release Date:

Last Version: 1.2.0

Release Date:

struts2-junit4-plugin

com.googlecode.struts2-conversation : struts2-junit4-plugin

Sonatype helps open source projects to set up Maven repositories on https://oss.sonatype.org/

Last Version: 1.7.4

Release Date:

junit5-kubernetes

com.github.jeanbaptistewatenberg.junit5kubernetes : postgresql

Use pod and other kubernetes object right form your junit5 tests.

Last Version: 2.3.1-beta

Release Date:

Screenshot Assert

io.github.rovner : screenshot-assert-junit5

Screenshot Assert library for browser testing with selenium and allure report

Last Version: 0.0.1

Release Date:

gRPC Mock JUnit5

org.grpcmock : grpcmock-junit5

gRPC Mock JUnit5 integration

Last Version: 0.7.8

Release Date:

stack-source-junit4

com.gitlab.lae.stack.source : stack-source-junit4

Decorates test failure stack trace with source code snippets.

Last Version: 0.4.2

Release Date:

Openutils testing library (JUnit)

net.sourceforge.openutils : openutils-testing-junit

Framework that helps to simplify unit testing coding with JUnit

Last Version: 2.2.3

Release Date:

ordered-junit-build

com.bestxty : ordered-junit-build

Junit method test order support.

Last Version: 1.0.1

Release Date:

Last Version: 7.1.1

Release Date:

Junit Validation

com.lotaris.junit : junit-validation

JUnit helpers to write unit tests for Java EE Validation.

Last Version: 0.3.1

Release Date:

Geb for JUnit 4

org.gebish : geb-junit4

Geb (pronounced "jeb") integration with the JUnit 4 test framework.

Last Version: 5.1

Release Date:

KoPeMe - JUnit 3

de.dagere.kopeme : kopeme-junit3

KoPeMe-JUnit 3 integration module

Last Version: 1.1.8

Release Date:

cockroachdb-junit4

io.github.melozzola : cockroachdb-junit4

JUnit rule for CockroachDB development

Last Version: 1.0.1

Release Date:

jdummy

com.github.nmuzhichin : jdummy-junit5

Jdummy is the simplest library for creating test objects

Last Version: 1.1.0

Release Date:

junit5spring

au.com.dius.pact.provider : junit5spring

# Pact Spring/JUnit5 Support This module extends the base [Pact JUnit5 module](/provider/junit5/README.md). See that for more details. ## Dependency The combined library (JUnit5 + Spring) is available on maven central using: group-id = au.com.dius.pact.provider artifact-id = junit5spring version-id = 4.2.x ## Usage For writing Spring Pact verification tests with JUnit 5, there is an JUnit 5 Invocation Context Provider that you can use with the `@TestTemplate` annotation. This will generate a test for each interaction found for the pact files for the provider. To use it, add the `@Provider` and `@ExtendWith(SpringExtension.class)` and one of the pact source annotations to your test class (as per a JUnit 5 test), then add a method annotated with `@TestTemplate` and `@ExtendWith(PactVerificationSpringProvider.class)` that takes a `PactVerificationContext` parameter. You will need to call `verifyInteraction()` on the context parameter in your test template method. For example: ```java @ExtendWith(SpringExtension.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT) @Provider("Animal Profile Service") @PactBroker public class ContractVerificationTest { @TestTemplate @ExtendWith(PactVerificationSpringProvider.class) void pactVerificationTestTemplate(PactVerificationContext context) { context.verifyInteraction(); } } ``` You will now be able to setup all the required properties using the Spring context, e.g. creating an application YAML file in the test resources: ```yaml pactbroker: host: your.broker.host auth: username: broker-user password: broker.password ``` You can also run pact tests against `MockMvc` without need to spin up the whole application context which takes time and often requires more additional setup (e.g. database). In order to run lightweight tests just use `@WebMvcTest` from Spring and `MockMvcTestTarget` as a test target before each test. For example: ```java @WebMvcTest @Provider("myAwesomeService") @PactBroker class ContractVerificationTest { @Autowired private MockMvc mockMvc; @TestTemplate @ExtendWith(PactVerificationSpringProvider.class) void pactVerificationTestTemplate(PactVerificationContext context) { context.verifyInteraction(); } @BeforeEach void before(PactVerificationContext context) { context.setTarget(new MockMvcTestTarget(mockMvc)); } } ``` You can also use `MockMvcTestTarget` for tests without spring context by providing the controllers manually. For example: ```java @Provider("myAwesomeService") @PactFolder("pacts") class MockMvcTestTargetStandaloneMockMvcTestJava { @TestTemplate @ExtendWith(PactVerificationSpringProvider.class) void pactVerificationTestTemplate(PactVerificationContext context) { context.verifyInteraction(); } @BeforeEach void before(PactVerificationContext context) { MockMvcTestTarget testTarget = new MockMvcTestTarget(); testTarget.setControllers(new DataResource()); context.setTarget(testTarget); } @RestController static class DataResource { @GetMapping("/data") @ResponseStatus(HttpStatus.NO_CONTENT) void getData(@RequestParam("ticketId") String ticketId) { } } } ``` **Important:** Since `@WebMvcTest` starts only Spring MVC components you can't use `PactVerificationSpringProvider` and need to fallback to `PactVerificationInvocationContextProvider` ## Webflux tests You can test Webflux routing functions using the `WebFluxTarget` target class. The easiest way to do it is to get Spring to autowire your handler and router into the test and then pass the routing function to the target. For example: ```java @Autowired YourRouter router; @Autowired YourHandler handler; @BeforeEach void setup(PactVerificationContext context) { context.setTarget(new WebFluxTarget(router.route(handler))); } @TestTemplate @ExtendWith(PactVerificationSpringProvider.class) void pactVerificationTestTemplate(PactVerificationContext context) { context.verifyInteraction(); } ``` ## Modifying requests As documented in [Pact JUnit5 module](/provider/junit5/README.md#modifying-the-requests-before-they-are-sent), you can inject a request object to modify the requests made. However, depending on the Pact test target you are using, you need to use a different class. | Test Target | Class to use | |-------------|--------------| | HttpTarget, HttpsTarget, SpringBootHttpTarget | org.apache.http.HttpRequest | | MockMvcTestTarget | MockHttpServletRequestBuilder | | WebFluxTarget | WebTestClient.RequestHeadersSpec | # Verifying V4 Pact files that require plugins (version 4.3.0+) Pact files that require plugins can be verified with version 4.3.0+. For details on how plugins work, see the [Pact plugin project](https://github.com/pact-foundation/pact-plugins). Each required plugin is defined in the `plugins` section in the Pact metadata in the Pact file. The plugins will be loaded from the plugin directory. By default, this is `~/.pact/plugins` or the value of the `PACT_PLUGIN_DIR` environment variable. Each plugin required by the Pact file must be installed there. You will need to follow the installation instructions for each plugin, but the default is to unpack the plugin into a sub-directory `<plugin-name>-<plugin-version>` (i.e., for the Protobuf plugin 0.0.0 it will be `protobuf-0.0.0`). The plugin manifest file must be present for the plugin to be able to be loaded. # Test Analytics We are tracking anonymous analytics to gather important usage statistics like JVM version and operating system. To disable tracking, set the 'pact_do_not_track' system property or environment variable to 'true'.

Last Version: 4.4.0-beta.2

Release Date: