Можем ли мы установить переменную Thread Local из дочернего класса и получить к ней доступ в родительском классе в Java?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Можем ли мы установить переменную Thread Local из дочернего класса и получить к ней доступ в родительском классе в Java?

Сообщение Anonymous »

У меня есть проект автоматизации с двумя тестовыми классами (дочерними классами) и TestBase (родительским классом). В TestBase у меня есть атрибут threadlocal, определенный ниже.

Код: Выделить всё

protected ThreadLocal iTestContextThreadLocal = new ThreadLocal();

В каждом дочернем классе я устанавливаю атрибут под названием «feature» в этот атрибут ThreadLocal. Пример дочернего класса выглядит следующим образом.

Код: Выделить всё

public class RestTests extends TestBase{

@BeforeClass(alwaysRun = true)
public void init(ITestContext iTestContext) {
iTestContext.setAttribute("feature", "Sample - RestTests1");
iTestContextThreadLocal.set(iTestContext);
String feature = iTestContextThreadLocal.get().getAttribute("feature").toString();
}

@Test
public void testScenario1(){
//Automation Code
}
}
В TestBase у меня есть AfterMethod, внутри которого я пытаюсь получить доступ к этому значению, установленному в дочернем классе перед методом.

Код: Выделить всё

    @AfterMethod(alwaysRun = true)
public void test() {
try {
ITestContext iTestContext = iTestContextThreadLocal.get();
String feature = iTestContext.getAttribute("feature").toString();
System.out.println("***** ThreadLocalAttribute: " + feature);

//Rest of the code
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// Clean up the ThreadLocal variables after method execution
iTestContextThreadLocal.remove();
}
}
Проблема, с которой я столкнулся, заключается в том, что в качестве выходных данных предоставляется набор функций параллельного выполнения тестов (как в классах, так и в методах) в одном классе.
В качестве примера, если я установите «Sample — RestTests1» и «Sample — RestTests2» в качестве функций в моих дочерних классах, когда я пытаюсь получить к ним доступ в TestBase afterMethod с помощью приведенного ниже кода, предоставляется только одна функция класса

Код: Выделить всё

iTestContext.getAttribute("feature").toString();
Как это исправить и получить набор функций в каждом классе с помощью AfterMethod TestBase?
Я пробовал изменить порядок аннотаций и опробовать решения в Интернете. Но исправление пока не найдено.
Любая помощь приветствуется.
Заранее спасибо.

Подробнее здесь: https://stackoverflow.com/questions/791 ... the-parent
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»