针对特定组的TestNG @AfterMethod在Eclipse中的每个方法之后运行

时间:2011-06-06 23:53:17

标签: java testng

我不知道分组在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>已在模板中被替换。

1 个答案:

答案 0 :(得分:1)

对不起,我不明白你对这个问题的描述。你的两个测试方法属于“刷新”组,所以如果你运行那个组,你会看到它们都运行,然后每个都会调用prepareTest()(顺便说一句,这似乎很奇怪)一个after方法将被称为“prepareTest()”,你确定你不是故意要成为@BeforeMethod吗?)。

但是您的代码有些奇怪:您的两个测试方法声明了一个数据提供程序,但它们不接受任何参数。要么他们需要参数,所以你应该更新他们的签名以匹配数据提供者返回的,或者他们没有,你应该删除dataProvider属性。