private String buildTestName(final TestCase<I, O> testCase,
                                     final int caseNo,
                                     final int casesCount) {

            // No name or namefunc provided so build a name from the case number and the input
            // Case number may help in linking a failed test to the source
            final int padLen = Integer.toString(casesCount).length();
            final String paddedCaseNo = Strings.padStart(Integer.toString(caseNo), padLen, '0');

            final Function<TestCase<I, O>, String> nameFunc;
            if (!NullSafe.isBlankString(testCase.getName())) {
                nameFunc = TestCase::getName;
            } else {
                nameFunc = Objects.requireNonNullElseGet(
                        nameFunction,
                        () -> this::buildTestNameFromInput);
            }
            return paddedCaseNo + " " + nameFunc.apply(testCase);
        }
Build the {@link Stream} of {@link DynamicTest} with all the added test cases.
stroom-test-common/src/main/java/stroom/test/common/DynamicTestBuilder.java