TestNG - 奇怪的行为
TestNG - Weird behavior
我对这个 testNG 行为有点困惑。
考虑一下这个简单的 testNG 套件。 Test2 依赖于 Test1。下面的套件也仅在 Test1 之后启动 Test2,这太棒了!
<suite name="testng-behvaior" parallel="none">
<test name="test1">
<parameter name="browser" value="chrome" />
<classes>
<class name="com.test.Test1" />
<class name="com.test.Test2" />
</classes>
</test>
</suite>
以上套件工作正常,没有任何问题。
但请考虑一下。根据 testNG 文档,所有 <test>
都将分配给不同的线程。因为我只有一个 <test>
,只有一个线程在执行这个套件,这很好。但它在 Test1 之前从 Test2 开始。
<suite name="testng-behvaior" parallel="tests">
<test name="test1">
<parameter name="browser" value="chrome" />
<classes>
<class name="com.test.Test1" />
<class name="com.test.Test2" />
</classes>
</test>
</suite>
对我来说 - 在上述情况下,parallel="tests"
和 parallel="none"
应该没有任何区别并且表现相同。
是什么让 testNG 的行为有所不同?我怎样才能让线程按顺序在 <test>
中执行 <classes>
?
有一个名为 preserve-order
的属性。默认情况下,此属性在 <test>
级别和 <suite>
级别的值为 true
。
此属性启用后,会导致 TestNG 以与 <test>
标记中定义的顺序相同的顺序加载 类,然后 运行 中定义的所有 @Test
方法他们每个人。
但要使此属性起作用,您需要禁用并行性,即,您需要将属性 parallel
设置为 none
。
只有这样,TestNG 才会按照在 <test>
标记中找到的顺序执行测试。
所以 parallel="tests"
不等于 parallel="none"
对于那些一直面临类似问题的人 - 如果您希望测试是并行的,但又想按顺序在测试中执行 类,请使用以下方法
<suite name="testng-behvaior" parallel="tests">
<test name="test1" parallel="none"> <!-- we do not want parallel here -->
<parameter name="browser" value="chrome" />
<classes>
<class name="com.test.Test1" />
<class name="com.test.Test2" />
</classes>
</test>
</suite>
我对这个 testNG 行为有点困惑。
考虑一下这个简单的 testNG 套件。 Test2 依赖于 Test1。下面的套件也仅在 Test1 之后启动 Test2,这太棒了!
<suite name="testng-behvaior" parallel="none">
<test name="test1">
<parameter name="browser" value="chrome" />
<classes>
<class name="com.test.Test1" />
<class name="com.test.Test2" />
</classes>
</test>
</suite>
以上套件工作正常,没有任何问题。
但请考虑一下。根据 testNG 文档,所有 <test>
都将分配给不同的线程。因为我只有一个 <test>
,只有一个线程在执行这个套件,这很好。但它在 Test1 之前从 Test2 开始。
<suite name="testng-behvaior" parallel="tests">
<test name="test1">
<parameter name="browser" value="chrome" />
<classes>
<class name="com.test.Test1" />
<class name="com.test.Test2" />
</classes>
</test>
</suite>
对我来说 - 在上述情况下,parallel="tests"
和 parallel="none"
应该没有任何区别并且表现相同。
是什么让 testNG 的行为有所不同?我怎样才能让线程按顺序在 <test>
中执行 <classes>
?
有一个名为 preserve-order
的属性。默认情况下,此属性在 <test>
级别和 <suite>
级别的值为 true
。
此属性启用后,会导致 TestNG 以与 <test>
标记中定义的顺序相同的顺序加载 类,然后 运行 中定义的所有 @Test
方法他们每个人。
但要使此属性起作用,您需要禁用并行性,即,您需要将属性 parallel
设置为 none
。
只有这样,TestNG 才会按照在 <test>
标记中找到的顺序执行测试。
所以 parallel="tests"
不等于 parallel="none"
对于那些一直面临类似问题的人 - 如果您希望测试是并行的,但又想按顺序在测试中执行 类,请使用以下方法
<suite name="testng-behvaior" parallel="tests">
<test name="test1" parallel="none"> <!-- we do not want parallel here -->
<parameter name="browser" value="chrome" />
<classes>
<class name="com.test.Test1" />
<class name="com.test.Test2" />
</classes>
</test>
</suite>