diff --git a/src/main/java/io/testproject/sdk/internal/reporting/inferrers/GenericInferrer.java b/src/main/java/io/testproject/sdk/internal/reporting/inferrers/GenericInferrer.java index c6cc3723..754b1269 100644 --- a/src/main/java/io/testproject/sdk/internal/reporting/inferrers/GenericInferrer.java +++ b/src/main/java/io/testproject/sdk/internal/reporting/inferrers/GenericInferrer.java @@ -59,7 +59,7 @@ public ReportSettings inferReportSettings() { return getUnnamedEntries(); } - String projectName = clazz.getPackageName(); + String projectName = getPackageName(clazz); String jobName = firstTrace.getClassName(); return new ReportSettings(projectName, jobName); diff --git a/src/main/java/io/testproject/sdk/internal/reporting/inferrers/JUnitInferrer.java b/src/main/java/io/testproject/sdk/internal/reporting/inferrers/JUnitInferrer.java index 0a13f005..a759aa72 100644 --- a/src/main/java/io/testproject/sdk/internal/reporting/inferrers/JUnitInferrer.java +++ b/src/main/java/io/testproject/sdk/internal/reporting/inferrers/JUnitInferrer.java @@ -93,7 +93,7 @@ public ReportSettings inferReportSettings() { // If JUnit's DisplayName annotation was found -> return it. // Otherwise -> return clazz package name and clazz simple name return Objects.requireNonNullElseGet(result, () -> - new ReportSettings(clazz.getPackageName(), clazz.getSimpleName())); + new ReportSettings(getPackageName(clazz), clazz.getSimpleName())); } } @@ -117,9 +117,7 @@ private ReportSettings inspectDisplayName(final Class clazz) { try { Method valueMethod = annotation.get().annotationType().getDeclaredMethod(JUNIT5_DISPLAY_NAME_VALUE); - return new ReportSettings( - clazz.getPackageName(), - valueMethod.invoke(annotation.get()).toString()); + return new ReportSettings(getPackageName(clazz), valueMethod.invoke(annotation.get()).toString()); } catch (IllegalAccessException | NoSuchMethodException | InvocationTargetException e) { LOG.error("Failed to infer JobName from DisplayName annotation", e); return null; diff --git a/src/main/java/io/testproject/sdk/internal/reporting/inferrers/ReportSettingsInferrer.java b/src/main/java/io/testproject/sdk/internal/reporting/inferrers/ReportSettingsInferrer.java index 985d9ad8..bc045315 100644 --- a/src/main/java/io/testproject/sdk/internal/reporting/inferrers/ReportSettingsInferrer.java +++ b/src/main/java/io/testproject/sdk/internal/reporting/inferrers/ReportSettingsInferrer.java @@ -18,6 +18,7 @@ package io.testproject.sdk.internal.reporting.inferrers; import io.testproject.sdk.internal.rest.ReportSettings; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -49,6 +50,16 @@ default ReportSettings getUnnamedEntries() { return new ReportSettings("Unnamed Project", "Unnamed Job"); } + /** + * Get class package name, or if it's empty, the unnamed entry. + * @param clazz Class to infer it's package name. + * @return class package name, or if it's empty, the unnamed entry. + */ + default String getPackageName(Class clazz) { + return StringUtils.isEmpty(clazz.getPackageName()) + ? getUnnamedEntries().getProjectName() : clazz.getPackageName(); + } + /** * Infers Test name using specific Unit Test framework annotations. * @return A name of the Test. diff --git a/src/main/java/io/testproject/sdk/internal/reporting/inferrers/TestNGInferrer.java b/src/main/java/io/testproject/sdk/internal/reporting/inferrers/TestNGInferrer.java index 7c24ea07..a54f8a47 100644 --- a/src/main/java/io/testproject/sdk/internal/reporting/inferrers/TestNGInferrer.java +++ b/src/main/java/io/testproject/sdk/internal/reporting/inferrers/TestNGInferrer.java @@ -95,7 +95,7 @@ public ReportSettings inferReportSettings() { // If TestNG @BeforeClass or @BeforeSuite annotations with description were found -> return it. // Otherwise -> return clazz package name and clazz simple name return Objects.requireNonNullElseGet(result, () -> - new ReportSettings(clazz.getPackageName(), clazz.getSimpleName())); + new ReportSettings(getPackageName(clazz), clazz.getSimpleName())); } } @@ -143,7 +143,7 @@ private ReportSettings inspectAnnotation(final Class clazz, final String anno String description = descriptionMethod.invoke(annotation.get()).toString(); if (!StringUtils.isEmpty(description)) { - return new ReportSettings(clazz.getPackageName(), description); + return new ReportSettings(getPackageName(clazz), description); } // Description is empty