由于失败而绕过@Test dependsOnMethods

时间:2015-08-19 14:42:17

标签: java testing selenium-webdriver automation testng

我对@Test(dependOnMethods {“”})有疑问。 我希望我的测试按特定顺序运行,所以我按下了我编写的每个测试。到目前为止,至少我发现的最好的方法是dependsOnMethods!但是,由于之后的测试需要通过之前的测试,我无法运行所有测试并查看哪些测试失败。我的程序刚刚退出!所以这就是我正在使用的..

@Test(dependsOnMethods = {"shouldSelectAmountOfDoors"})
public void shouldSelectExtColor() throws InterruptedException{
    sycOptionalInfoPage.selectExtColor("GREEN");
}

@Test(dependsOnMethods = {"shouldSelectExtColor"})
public void shouldSelectIntColor() throws InterruptedException{
    sycOptionalInfoPage.selectIntColor("GOLD");
}

@Test(dependsOnMethods = {"shouldSelectIntColor"})
public void shouldEnterAComment() throws InterruptedException{
    sycOptionalInfoPage.enterComments("<(*-<)  <(*-*)>  (>-*)>   woot!");
    takeABreakYo();
}

动臂。非常容易理解和信任的POM!但是,如果我的shouldSelectIntColor()由于开发团队的id更改而失败,我希望shouldEnterAComment仍然运行!我怎样才能继续将我的测试链接在一条线上,但仍然在失败后运行?谢谢:))

2 个答案:

答案 0 :(得分:1)

您可以使用priority代替dependsOnMethods来实现您的目标:

@Test(priority = 1)
public void shouldSelectIntColor() throws InterruptedException{
}

@Test(priority = 2)
public void shouldEnterAComment() throws InterruptedException{
}

如果您的shouldSelectIntColor方法失败,它仍会执行shouldEnterAComment测试方法。

答案 1 :(得分:1)

您可以使用上述优先级,也可以使用SequenceType。它被称为软依赖。这样,即使方法失败,您的方法仍将运行。