Testng为通用测试方法动态更改测试名称

Testng为通用测试方法动态更改测试名称,testng,Testng,我有一个测试方法,它基于数据提供者运行了十次。。我想在每次执行时将测试的名称更改为自定义的有意义的名称。如何在testng中执行此操作?是的,可以根据数据提供程序提供的数据更改测试名称以在报告中显示它 由于@Test被视为一种方法,因此您可以将@beforethod与alwaysRun=true一起使用,并将从数据提供程序返回的数据与方法对象一起传递。在side it中,您可以用任何方式自定义您的方法 示例代码:(假设testData数组要返回的索引多于或等于7个) 在这里,在使用数据提供程序时

我有一个测试方法,它基于数据提供者运行了十次。。我想在每次执行时将测试的名称更改为自定义的有意义的名称。如何在testng中执行此操作?是的,可以根据数据提供程序提供的数据更改测试名称以在报告中显示它

由于
@Test
被视为一种方法,因此您可以将
@beforethod
alwaysRun=true
一起使用,并将从数据提供程序返回的数据与方法对象一起传递。在side it中,您可以用任何方式自定义您的方法

示例代码:(假设testData数组要返回的索引多于或等于7个)

在这里,在使用数据提供程序时,根据并行执行配置,测试可能在多个线程中运行。
testName
变量应该是
ThreadLocal

private ThreadLocal<String> testName = new ThreadLocal<>();
private ThreadLocal testName=new ThreadLocal();

让我们知道它是否解决了您的问题。

此testName变量是什么。。这是TestNG提供的吗?设置它如何改变TestNG模式。我不确定TestName变量是否仅在上面的代码示例中,它只是一个变量。与testNg无关。它不会改变任何模式。我们在这里使用反射来更改方法名称。为了确保它在执行测试之前更改了测试的名称,我们将它保存在@beforeMethod中。我知道您正在使用反射来获取方法名称,但是为什么要将threadlocal变量设置为“经过调整的名称”将使tetsng重新修改测试名称我无法理解testname.seti希望以这种方式调整它,以便可以将修改后的方法名称添加到itestresult结果对象
private ThreadLocal<String> testName = new ThreadLocal<>();