001package edu.pdx.cs.joy.junit; 002 003import org.junit.jupiter.api.AfterAll; 004import org.junit.jupiter.api.BeforeAll; 005import org.junit.jupiter.api.DynamicTest; 006import org.junit.jupiter.api.TestFactory; 007 008import java.util.Arrays; 009import java.util.List; 010import java.util.stream.Stream; 011 012import static org.junit.jupiter.api.Assertions.assertNotNull; 013import static org.junit.jupiter.api.DynamicTest.dynamicTest; 014 015 016/** 017 * The class demonstrates how JUnit 5's {@link DynamicTest} class can be used to generate test cases 018 * dynamically. 019 */ 020public class AutomaticallyGeneratedTest 021{ 022 @BeforeAll 023 public static void setUp() { 024 System.out.println("BeforeClass"); 025 } 026 027 @AfterAll 028 public static void tearDown() { 029 System.out.println("AfterClass"); 030 } 031 032 @TestFactory 033 Stream<DynamicTest> generateDynamicTests() { 034 return getTestNames().stream().map(name -> dynamicTest(name, () -> new GeneratedTest(name))); 035 } 036 037 public static List<String> getTestNames() { 038 return Arrays.asList( "One", "Two", "Three" ); 039 } 040 041 public static class GeneratedTest 042 { 043 private final String name; 044 045 public GeneratedTest(String name) { 046 this.name = name; 047 } 048 049 public String getName() { 050 return name; 051 } 052 053 public void run() 054 { 055 assertNotNull(getName()); 056 // assertEquals( 3, getName().length() ); 057 } 058 } 059 060}