package unitTest; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; import java.util.Iterator; import java.util.Random; import java.util.function.Function; import java.util.stream.Stream; import org.junit.jupiter.api.DynamicTest; import org.junit.jupiter.api.TestFactory; import org.junit.jupiter.api.function.ThrowingConsumer; import project.Item; public class ItemUnitTest { @TestFactory public Stream<DynamicTest> deleteTestTrue() { Iterator<Integer> inputGenerator = new Iterator<Integer>() { int itemId; Random random = new Random(); @Override public boolean hasNext() { return random.nextInt(100) % 10 != 0; } @Override public Integer next() { itemId = (int) (random.nextDouble() * 10); Item i = new Item(); i.setId(itemId); return itemId; } }; Function<Integer, String> displayNameGenerator = (input) -> "item ID: " + input; ThrowingConsumer<Integer> testExecutor = (input) -> assertTrue(Item.delete(input)); return DynamicTest.stream(inputGenerator, displayNameGenerator, testExecutor); } @TestFactory public Stream<DynamicTest> deleteTestFalse() { Iterator<Integer> inputGenerator = new Iterator<Integer>() { int itemId; Random random = new Random(); @Override public boolean hasNext() { return random.nextInt(100) % 10 != 0; } @Override public Integer next() { itemId = (int) (random.nextDouble() * 10); return itemId; } }; Function<Integer, String> displayNameGenerator = (input) -> "item ID: " + input; ThrowingConsumer<Integer> testExecutor = (input) -> assertFalse(Item.delete(input)); return DynamicTest.stream(inputGenerator, displayNameGenerator, testExecutor); } }