在testng

时间:2015-06-11 11:01:49

标签: java annotations testng

我正在为我的移动网站编写自动化代码。

的Class1: -

public class Sample{

    @BeforeTest
    public void createUser(){
    // code to create user
    }

    @Test
    public void verifyUser(){
    // code to verify user
    }


    @AfterTest
    public void deleteUser(){
    // code to delete user
    }

}

Class1。我有不同的类,例如Class2Class3Class4

testing.xml

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="Suite1" verbose="1">
    <test name="Regression1" parallel="false" preserve-order="true">
        <classes>
            <class name="Class1"/>
            <class name="Class2"/>          
            <class name="Class3"/>
            <class name="Class4"/>
        </classes>
    </test>
</suite>

要运行的命令: -

mvn -Dtests=testing.xml test

当我在命令上方运行时,@BeforeTest Class1Class2Class3Class4首先被调用。这意味着在运行任何测试之前首先创建了4个用户。然后只有Class1测试正在运行Class2,依此类推。来自所有类的Atlast @AfterTest正在运行(删除所有用户atlast)。

我不想要这种情况。

我需要以下方式来运行我的每个测试: -

  1. 创建用户
  2. 验证用户
  3. 删除用户
  4. 我需要首先执行Class1,然后Class2执行,依此类推。

    我必须做的testng注释有什么变化吗?

1 个答案:

答案 0 :(得分:2)

使用BeforeMethod代替BeforeTestBeforeTest方法将在<test>中的testng.xml标记之前运行,而不是在@Test方法之前运行。 当然,也可以使用AfterMethod代替AfterTest

检查我的回答是否有其他类似问题:Difference between BeforeClass and BeforeTest in TestNG