Примечание: убедитесь, что вы используете TestNG 7.0.0-бета1, который является последней выпущенной на сегодняшний день версией
Самый простой способ сделать это - ввести эти параметры черезслушатель.
Вы в основном реализуете интерфейс org.testng.ITestListener
, используя класс.Вы создаете экземпляр этого слушателя, передавая требуемую карту пользовательских объектов, которые требуются вашему тесту.В методе onStart(ITestContext ctx)
слушателей вы передаете эти атрибуты объекту ITestContext
.
Ниже приведен полноценный пример, демонстрирующий это в действии.
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.Reporter;
import org.testng.TestNG;
import org.testng.annotations.Test;
public class Example {
public static void main(String[] args) {
TestNG testng = new TestNG();
testng.setTestClasses(new Class[] {MyTestClass.class});
Map<String, Data> attributes = new HashMap<>();
attributes.put("data1", new Data("TestNG"));
attributes.put("data2", new Data("Selenium"));
attributes.put("data3", new Data("Maven"));
LocalListener listener = new LocalListener(attributes);
testng.addListener(listener);
testng.setVerbose(2);
testng.run();
}
public static class LocalListener implements ITestListener {
private Map<String, Data> attributes;
public LocalListener(Map<String, Data> attributes) {
this.attributes = attributes;
}
@Override
public void onStart(ITestContext context) {
attributes.forEach(context::setAttribute);
}
}
public static class MyTestClass {
@Test
public void testMethod() {
ITestContext ctx = Reporter.getCurrentTestResult().getTestContext();
Set<String> attributeNames = ctx.getAttributeNames();
attributeNames.forEach(
attributeName -> {
System.err.println("===>" + ctx.getAttribute(attributeName).toString());
});
}
}
public static class Data {
private String name;
public Data(String name) {
this.name = name;
}
@Override
public String toString() {
return "Data[" + name + "]";
}
}
}
Выводкак показано ниже
===>Data[Maven]
===>Data[Selenium]
===>Data[TestNG]
PASSED: testMethod
===============================================
Command line test
Tests run: 1, Failures: 0, Skips: 0
===============================================
===============================================
Command line suite
Total tests run: 1, Passes: 1, Failures: 0, Skips: 0
===============================================