Rules and Runners replaced with Extensions
@RunWith(Parameterized.class)
@RunWith(Cucumber.class)
@RunWith(PowerMockRunner.class)@Rule
public ExpectedException exception = ExpectedException.none();
@ClassRule
public static final KafkaJunitRule KAFKA_RULE = new KafkaJunitRule();@ExtendWith(KafkaJunitExtension.class, MockitoExtension.class)
class KafkaIntegrationTest {
Extend your test class with the @ExtendWith annotation
public class KafkaJunitExtension implements BeforeAllCallback, AfterEachCallback,
BeforeEachCallback, AfterAllCallback,
ParameterResolverBeforeAllCallback
BeforeEachCallback
BeforeTestExecutionCallback
AfterTestExecutionCallback
AfterEachCallback
AfterAllCallback
Lifecycle Extension points
TestExecutionExceptionHandler
ExecutionCondition
ParameterResolver
TestInstancePostProcessor
Dependency Injection Extension points
Extensions can inject parameters into:
@Test
@DisplayName("messages should be transformed and republished to Kafka")
void transform_and_republish_to_kafka(EphemeralKafkaBroker broker) {
broker.getKafkaPort()
...
}Assertions.assertAll(() -> assertThat(msg).isNotNull(),
() -> assertThat(msg.key()).isEqualTo("keyA"),
() -> assertThat(msg.value()).isEqualTo("valueA"))assertThrows(IllegalArgumentException.class, () -> viewMetadata.setTopN(-1))assertFalse(testConditionIsTrue(), () -> "Really " + "expensive " + "message" + ".");public interface ComparableContract<T extends Comparable<T>> extends Testable<T> {
T createSmallerValue();
@Test
default void returnsZeroWhenComparedToItself() {
T value = createValue();
assertEquals(0, value.compareTo(value));
}
@Test
default void returnsPositiveNumberComparedToSmallerValue() {
T value = createValue();
T smallerValue = createSmallerValue();
assertTrue(value.compareTo(smallerValue) > 0);
}
@Test
default void returnsNegativeNumberComparedToSmallerValue() {
T value = createValue();
T smallerValue = createSmallerValue();
assertTrue(smallerValue.compareTo(value) < 0);
}
}Demo