TestNG. Как получить ITestContext в любой момент выполнения теста

Теги: #<Tag:0x00007f73882be3e8> #<Tag:0x00007f73882be208> #<Tag:0x00007f73882be0a0> #<Tag:0x00007f73882bdee8>

Есть необходимость проверять запущен ли какой-либо тест. Например, в момент выполнения ДатаПровайдера.
Пока есть идея использовать вызов getTestContexts() из TestListenerAdapter
Но идея выглядит как-то странно. Помогите, куда копать?)

Напишите, чего вы в конечном счете хотите добиться, может быть кто-то подскажет решение получше.

В датапровайдере при подготовке данных, вызывается метод. Назовем его A
В этом методе A я хочу знать, вызван он в рамках запущенного теста или никакой тест еще фактически не стартанул

вопрос может быть легче решить в коде самого дата провайдера - заведите там статическое поле указывающее был он вызван или нет еще и или сколько раз

кем был вызван это более сложный вопрос

на самом деле есть возможность и метод который вызвал датапровайдер узнать . вам все еще надо ?
метод который дата провайдер обязан реализовать уже имеет нужную сигнатуру

	@DataProvider(parallel = false, name = "csv")
	public static String[][] createData_from_csv(final ITestContext context, final Method method) {
		// sometimes specific behavior is required from custom data provider caller
		// see also:
		// https://automated-testing.info/t/testng-kak-poluchit-itestcontext-v-lyuboj-moment-vypolneniya-testa/25973/5
		// (in Russian)
		if (debug) {
			System.err.println(String.format("Providing data to method: '%s' of test '%s'", method.getName(),
					context.getCurrentXmlTest().getName()));
		}

в итоге видим

Providing data to method: 'testFilteredData' of test 'Parse Search Result'

Opening Filtered Example
Reading Open Office Spreadsheet : Filtered Example
Determine control column index for ENABLED
Processing column # 0 row 0 A ID
Processing column # 1 row 0 B SEARCH
Processing column # 2 row 0 C COUNT
Processing column # 3 row 0 D ENABLED

здесь еще печатает детали собственно чтения файла с данными
к вопросу определения вызывающего метода не относится

Не, дело было в другом. Но все равно спасибо за участие :relaxed:

не говорите загадками

Но ведь я выше и написала что мне нужно. Вот же

ну так и имплементируйте - как узнать кто вызвал дата провайдер я показал
историю вызовов можно хранить где то - для этого классы вообще то и придуманы чтобы иметь поведение
берете свой датапровайдер класс и в него добавляете это поведение
логика обработки это уж ваша задача
по моему
задача форума - помочь, а не предоставить готовое решение…

Вас ведь насильно никто сюда не притащил? Что вы так злитесь. Был конкретный вопрос.
Получение контекста в любой момент выполнения

Где-то что-то хранить

конечно же можно. И я могу это сделать, не вопрос. Вопрос был в другом. Мне не нужно знать кто вызывал Датапровайдер. Вообще такого вопроса не стояло

Вопрос был конкретно про какой-то абстрактный метод, при вызове которого я хочу понять, стартовал уже тест или все еще выполняется датапровайдер/метод инициализации

для любого вообще узнать стек вызова думаю довольно дорого
если интересующий метод принадлежит классу дата провайдера то стек со стороны тестов доступен