A DynamicContainer is a container generated at runtime. It is composed of a display name and an Iterable or Stream DynamicNodes.
Instances of DynamicContainer must be generated by factory methods annotated with @TestFactory annotation.
@API(status = MAINTAINED, since = "5.3")
public class DynamicContainer extends DynamicNode {
public static DynamicContainer dynamicContainer(String displayName, Iterable<? extends DynamicNode> dynamicNodes) {
return dynamicContainer(displayName, null, StreamSupport.stream(dynamicNodes.spliterator(), false));
}
public static DynamicContainer dynamicContainer(String displayName, Stream<? extends DynamicNode> dynamicNodes) {
return dynamicContainer(displayName, null, dynamicNodes);
}
public static DynamicContainer dynamicContainer(String displayName, URI testSourceUri,
Stream<? extends DynamicNode> dynamicNodes) {
return new DynamicContainer(displayName, testSourceUri, dynamicNodes);
}
}
Find the below working application.
DynamicContainerDemo1.java
package com.sample.app;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.DynamicContainer.dynamicContainer;
import static org.junit.jupiter.api.DynamicTest.dynamicTest;
import java.util.stream.Stream;
import org.junit.jupiter.api.DynamicNode;
import org.junit.jupiter.api.TestFactory;
public class DynamicContainerDemo1 {
@TestFactory
Stream<DynamicNode> dynamicTestsWithContainers() {
return Stream
.of("Hello")
.map(input -> dynamicContainer("Container " + input,
Stream.of(dynamicTest("not null", () -> assertNotNull(input)),
dynamicContainer("properties",Stream.of(
dynamicTest("length > 0", () -> assertTrue(input.length() > 0)),
dynamicTest("not empty", () -> assertFalse(input.isEmpty())))),
dynamicContainer("utilities", Stream.of(
dynamicTest("string reversal", () -> assertEquals("olleH", reverse(input))))))));
}
private static String reverse(String str) {
return new StringBuilder().append(str).reverse().toString();
}
}
Run above application, you will see the test results in junit window.
Previous Next Home
No comments:
Post a Comment