From de520fddb2c856b10723b9925d43b97d0c441aa9 Mon Sep 17 00:00:00 2001 From: Alina Kornilo <46889599+akornilo-amplify@users.noreply.github.com> Date: Wed, 21 Apr 2021 18:01:31 +0300 Subject: [PATCH 1/2] support test instance params from superclasses --- .../src/main/java/io/qameta/allure/testng/AllureTestNg.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/allure-testng/src/main/java/io/qameta/allure/testng/AllureTestNg.java b/allure-testng/src/main/java/io/qameta/allure/testng/AllureTestNg.java index 9ac145202..741db1863 100644 --- a/allure-testng/src/main/java/io/qameta/allure/testng/AllureTestNg.java +++ b/allure-testng/src/main/java/io/qameta/allure/testng/AllureTestNg.java @@ -72,6 +72,7 @@ import java.util.function.Consumer; import java.util.stream.Collectors; import java.util.stream.Stream; +import org.apache.commons.lang3.reflect.FieldUtils; import static io.qameta.allure.util.ResultsUtils.ALLURE_ID_LABEL_NAME; import static io.qameta.allure.util.ResultsUtils.bytesToHex; @@ -669,7 +670,7 @@ private List getParameters(final ITestContext context, ); final Object instance = method.getInstance(); if (nonNull(instance)) { - Stream.of(instance.getClass().getDeclaredFields()) + Arrays.stream(FieldUtils.getAllFields(instance.getClass())) .filter(field -> field.isAnnotationPresent(TestInstanceParameter.class)) .forEach(field -> { final String name = Optional.ofNullable(field.getAnnotation(TestInstanceParameter.class)) From e2f1acac0d13cf97020b16ca1f8726cfb4639d33 Mon Sep 17 00:00:00 2001 From: Alina Kornilo <46889599+akornilo-amplify@users.noreply.github.com> Date: Mon, 17 May 2021 20:11:51 +0300 Subject: [PATCH 2/2] Handle superclass fields as instance params --- .../java/io/qameta/allure/testng/AllureTestNg.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/allure-testng/src/main/java/io/qameta/allure/testng/AllureTestNg.java b/allure-testng/src/main/java/io/qameta/allure/testng/AllureTestNg.java index 741db1863..38fec74ef 100644 --- a/allure-testng/src/main/java/io/qameta/allure/testng/AllureTestNg.java +++ b/allure-testng/src/main/java/io/qameta/allure/testng/AllureTestNg.java @@ -72,7 +72,6 @@ import java.util.function.Consumer; import java.util.stream.Collectors; import java.util.stream.Stream; -import org.apache.commons.lang3.reflect.FieldUtils; import static io.qameta.allure.util.ResultsUtils.ALLURE_ID_LABEL_NAME; import static io.qameta.allure.util.ResultsUtils.bytesToHex; @@ -670,7 +669,14 @@ private List getParameters(final ITestContext context, ); final Object instance = method.getInstance(); if (nonNull(instance)) { - Arrays.stream(FieldUtils.getAllFields(instance.getClass())) + final List allFields = new ArrayList<>(); + Class currentClass = instance.getClass(); + while (currentClass != null) { + final Field[] declaredFields = currentClass.getDeclaredFields(); + Collections.addAll(allFields, declaredFields); + currentClass = currentClass.getSuperclass(); + } + allFields.stream() .filter(field -> field.isAnnotationPresent(TestInstanceParameter.class)) .forEach(field -> { final String name = Optional.ofNullable(field.getAnnotation(TestInstanceParameter.class))