当执行xml中定义的测试套件时,是否可以假设套件中的所有测试都在同一个JVM中执行?

时间:2018-04-17 12:44:36

标签: java testng

我在xml文件中定义了一个TestNG测试套件。这个套件安装了套件监听器。

<listeners>
    <listener class-name="com.my.package.MyListener"/>
</listeners>

在套件监听器的onStart()中,我初始化了一些静态类成员。

是否保证稍后在套件中执行的所有测试用例都在触发onStart()的同一JVM中执行,以便我在onStart()中初始化的静态变量值可供所有人使用测试案例?

1 个答案:

答案 0 :(得分:1)

是的,确实如此,将使用相同的JVM,因此所有类都可以使用相同的静态字段。

尽管如此,我发现当测试套件配置为使用多个并行线程(例如thread-count="5" parallel="tests")运行时,可能会出现一些初始化问题。

在我向侦听器类的onStart方法添加同步后,问题没有再次发生:

public synchronized void onStart(ISuite suite) {
    // Initialization code
}