TestNG 失败后不继续执行测试

Ant*_*ton 1 java testng automation

我有一个带有页面对象模型的测试自动化框架。我所有的测试都位于同一个包中的不同类中。

在 testng.xml 我有

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Smoke Test">
    <test name="SmokeTest">
        <classes>
            <class name="name.test1"/>
            <class name="name.test2"/>
            <class name="name.test3"/>
        </classes>
    </test>
</suite>
Run Code Online (Sandbox Code Playgroud)

问题是在运行 TestNG.xml 之后,如果第一个测试失败,它将停止测试执行。但我想继续执行所有测试用例。

我在我的项目中使用 Jenkins,如果其中一项测试失败,它会立即停止执行。

测试示例

public class LoginTestTest {
    public AndroidDriver<AndroidElement> driver;
    public AOWebClient aoWebClient;

    AOWebClient aoWeb;
    public LoginTestTest(AndroidDriver<AndroidElement> driver, AOWebClient aoWeb){
        this.driver = driver;
        this.aoWeb = aoWeb;
        PageFactory.initElements(new AppiumFieldDecorator(driver), this);
    }

    public LoginTestTest() {
    }

    SoftAssert softAssert = new SoftAssert();

    @BeforeClass
    public void setUp() throws Exception {

        driver = DesiredCapabilitiesSetup.startAppiumServer();
        aoWebClient = DesiredCapabilitiesSetup.getAOWeb();

        LogIn logIn = new LogIn(driver,aoWebClient);
        logIn.logIn();
    }

    @org.testng.annotations.Test
    public void goToSettings() throws InterruptedException {
        HeaderMenu header = new HeaderMenu(driver,aoWeb);
        HamburgerMenuList ham = new HamburgerMenuList(driver);

        header.clickHamburgerButton();
        header.clickHamburgerButton();

        header.editButtonClick();


        softAssert.assertAll();
    }   

    @AfterClass
    public void tearDown(ITestResult result) throws Exception {
            if (result.getStatus() == ITestResult.FAILURE) {
                TakeScreenshot screenshot = new TakeScreenshot();
                screenshot.TakeScreenshot("screenshots/");
            }
        LogOut logOut = new LogOut(driver,aoWeb);
        logOut.logOut();
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我的测试将失败,@Test它将永远不会继续@AfterClass方法。我希望如果@Test失败,它将继续@AfterClass方法,并且 After This Class continue 从testng.xml.

小智 5

您的 xml 中的套件标记应包含 configfailurepolicy="continue"。这告诉 testng 即使一个类中的配置失败,您仍然希望在该套件中运行其他类。请参阅文档中的“configfailurepolicy” 。

所以你的 xml 会变成:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Smoke Test" configfailurepolicy="continue">
    <test name="SmokeTest">
        <classes>
            <class name="name.test1"/>
            <class name="name.test2"/>
            <class name="name.test3"/>
        </classes>
    </test>
</suite>
Run Code Online (Sandbox Code Playgroud)