From aa1dbfc266dd13236556e8986c06fc3c104cf8f8 Mon Sep 17 00:00:00 2001 From: Richard Richter Date: Mon, 9 Mar 2020 00:16:33 +0100 Subject: [PATCH] MidpointTestMixin now provides also getTestNumber() --- tools/test-ng/pom.xml | 4 ++++ .../tools/testng/MidpointTestMixin.java | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/tools/test-ng/pom.xml b/tools/test-ng/pom.xml index e3a842e2bae..2bd435de12a 100644 --- a/tools/test-ng/pom.xml +++ b/tools/test-ng/pom.xml @@ -37,5 +37,9 @@ org.jetbrains annotations + + org.apache.commons + commons-lang3 + diff --git a/tools/test-ng/src/main/java/com/evolveum/midpoint/tools/testng/MidpointTestMixin.java b/tools/test-ng/src/main/java/com/evolveum/midpoint/tools/testng/MidpointTestMixin.java index e3756b522db..2425d4f606c 100644 --- a/tools/test-ng/src/main/java/com/evolveum/midpoint/tools/testng/MidpointTestMixin.java +++ b/tools/test-ng/src/main/java/com/evolveum/midpoint/tools/testng/MidpointTestMixin.java @@ -8,6 +8,7 @@ import java.util.Objects; +import org.apache.commons.lang3.StringUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.slf4j.Logger; @@ -69,6 +70,24 @@ default String getTestNameLong() { return testContext().getTestNameLong(); } + /** + * Returns the number of the test derived from the method name in form "testXxxDescription". + * Number is returned as a string with all leading zeroes preserved. + * Fails if the method name does not conform to the "testXxx" prefix to prevent invalid usage. + * Also fails if test-method context is not available. + */ + default String getTestNumber() { + String methodName = testContext().getTestMethodName(); + if (methodName.startsWith("test") && methodName.length() >= 7) { + String testNumber = methodName.substring(4, 7); + if (StringUtils.isNumeric(testNumber)) { + return testNumber; + } + } + throw new IllegalArgumentException( + "Test method name doesn't start with \"testXxx\" (Xxx = test number)."); + } + /** * Returns test class logger. */