我将测试分布在作为组的一部分的多个类中,并且有一个类具有该组的@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仍能运行这些测试。 (但不要跑两次)。