我不知道分组在TestNG中是如何工作的,我有这个代码:
@AfterMethod(groups = { "refreshPage" })
public void refresh() throws IOException {
driver.navigate().refresh();
}
@Test
public void test1() {
}
@Test(groups = { "refreshPage" })
public void test2() {
}
并且@AfterMethod在它们之后运行,即使只有第二个是该组的一部分。我想这与eclipse为执行生成的Template testng.xml配置文件无关。它只是整个测试类或单个测试方法的准系统设置。所以它不应该影响分组
编辑:
因此,为了让@AfterMethod只运行一些方法并运行整个测试类,我必须运行两次,有两组方法(有/无刷新)。
<test name="Test1">
<groups>
<run>
<include name="refreshPage*"/>
</run>
</groups>
<classes>
<class name="example.Test"/>
</classes>
</test>
<test name="Test2">
<groups>
<run>
<include name="dontRefreshPage*"/>
</run>
</groups>
<classes>
<class name="example.Test"/>
</classes>
</test>
我不知道如何通过Eclipse启动它,因为<test>
已在模板中被替换。
答案 0 :(得分:1)
对不起,我不明白你对这个问题的描述。你的两个测试方法属于“刷新”组,所以如果你运行那个组,你会看到它们都运行,然后每个都会调用prepareTest()(顺便说一句,这似乎很奇怪)一个after方法将被称为“prepareTest()”,你确定你不是故意要成为@BeforeMethod吗?)。
但是您的代码有些奇怪:您的两个测试方法声明了一个数据提供程序,但它们不接受任何参数。要么他们需要参数,所以你应该更新他们的签名以匹配数据提供者返回的,或者他们没有,你应该删除dataProvider属性。