为什么@beforeGroups执行两次,而@afterGroups在这种情况下执行一次?

时间:2017-07-19 16:35:45

标签: java testng

我将测试分布在作为组的一部分的多个类中,并且有一个类具有该组的@beforeGroups方法和@afterGroups方法。这一直按预期工作:

@Test(groups = { "group1"})
@BeforeGroups(groups = {"group1"}, alwaysRun = false)
@AfterGroups(groups = {"group1"}, alwaysRun = false)

...使用@beforeGroups和@afterGroups装饰器的方法只会按预期执行一次。

套件的运行时间开始增长,因此我想将一部分测试识别为一个“理智”。套件,并且这样做:

@Test(groups = { "group1", "sanity"})
@BeforeGroups(groups = {"group1"}, alwaysRun = false)
@AfterGroups(groups = {"group1"}, alwaysRun = false)

...当我更改套件XML文件以通过添加:

来反映这一点
<groups>
  <run>
    <include name="sanity" />
  </run>
</groups>

...我注意到beforeGroups代码没有运行。所以我更改了@beforeGroups和@afterGroups以反映这样的健全组:

@BeforeGroups(groups = {"group1", "sanity"}, alwaysRun = false)
@AfterGroups(groups = {"group1", "sanity"}, alwaysRun = false)

现在这里变得奇怪了。我希望@beforeGroups和@afterGroups只运行一次。但是我不仅遇到了两次运行的问题 - 只有@beforeGroups运行了两次,而不是@afterGroups!

所以我的问题是:

1)在上面的例子中,@ beforeGroups在@afterGroups运行一次的情况下运行了两次,这是一个错误吗?我不确定正确的行为是什么,但似乎两者都是一样的..

2)进行什么是正确的方法?我只是想定义一个套件文件,将一个测试子集标识为健全性测试,但我希望@beforeGroup和@afterGroup仍能运行这些测试。 (但不要跑两次)。

0 个答案:

没有答案