4

我正在并行运行我的测试。默认情况下,TestNG 将线程的名称设置为TestNG 难以浏览日志文件并区分消息。

TestNG javadocs没有帮助。

有什么方法可以设置线程名称或线程 ID?

4

2 回答 2

3

我在测试中设置了线程名称。例如,看看我在这个项目中是如何做到的。基本上,我所有的 Log4j 消息(以及 testNG 报告者消息)都在其中显示线程 ID。

这是一个基本示例,它可以很容易地在标准输出中显示线程 ID。Reporter您还可以使用该类将 threadid 放入 html 标准中。不幸的是,除非您编写自定义报告器(我在上面的项目链接中所做的),否则您不能将 threadid 放在 HTML 报告中的测试名称上:

import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

public class ParallelMethodTest 
{
    @BeforeMethod
    public void beforeMethod() {
        long id = Thread.currentThread().getId();
        System.out.println("Before test-method. Thread id is: " + id);
    }

    @Test
    public void testMethodsOne() {
        long id = Thread.currentThread().getId();
        System.out.println("Simple test-method One. Thread id is: " + id);
    }

    @Test
    public void testMethodsTwo() {
        long id = Thread.currentThread().getId();
        System.out.println("Simple test-method Two. Thread id is: " + id);
    }

    @AfterMethod
    public void afterMethod() {
        long id = Thread.currentThread().getId();
        System.out.println("After test-method. Thread id is: " + id);
    }
}
于 2014-07-08T22:35:34.910 回答
1

您可以使用 setName() 函数为您的线程提供自定义名称。

以下是在 JAVA 中设置线程名称的示例:

Thread.currentThread().setName("Thread 1");

上面的行会将您当前的线程名称设置为“线程 1”。

于 2016-09-26T06:29:22.083 回答