Java 如何使用TestNG和Maven在套件中的测试类之间共享状态?

Java 如何使用TestNG和Maven在套件中的测试类之间共享状态?,java,maven,testng,Java,Maven,Testng,我使用TestNG和Maven建立了一个Java测试框架。我的测试通过TestNG XML文件组织成套件 我想在同一套件中的不同测试类之间共享状态。具体地说,我想在测试套件执行开始时共享在我的TestRail测试用例管理器中创建的“测试计划”的ID 我到底要怎么做?TestNG似乎没有提供任何在测试类之间传输信息的功能,我也不确定如何在Maven级别上实现。父类中的静态变量会起作用吗,还是会泄漏或导致太多线程安全问题 更新:我决定在父类中使用一个静态变量来解决我的问题(该类还包含关于正在运行的测

我使用TestNG和Maven建立了一个Java测试框架。我的测试通过TestNG XML文件组织成套件

我想在同一套件中的不同测试类之间共享状态。具体地说,我想在测试套件执行开始时共享在我的TestRail测试用例管理器中创建的“测试计划”的ID

我到底要怎么做?TestNG似乎没有提供任何在测试类之间传输信息的功能,我也不确定如何在Maven级别上实现。父类中的静态变量会起作用吗,还是会泄漏或导致太多线程安全问题

更新:我决定在父类中使用一个静态变量来解决我的问题(该类还包含关于正在运行的测试的各种状态)。对于我的用例,我不太可能在同一个JVM中并发运行父类的多个实例,而需要静态变量是线程安全的


然而,对于如何实现这一点,我仍然对其他想法持开放态度,因为我喜欢学习新事物。

我认为您可以使用
beforethod
注释,并在每次测试执行之前将内容置于所需的状态。通常不需要更多的“状态共享”。

我决定为我的测试类使用父类的静态成员来解决这个问题。我不认为这是最好的解决方案,但它适用于我所关心的用例。

我不确定\@before方法如何使用它。在这种情况下,我想分享的唯一真实状态是我的TCM软件中“测试计划”的ID,它是在测试套件执行开始时创建的。例如,\@BeforeSuite函数将创建测试计划,然后获取ID—但我想将该ID发送到套件中的所有其他测试类。