当前位置: 首页 > 知识库问答 >
问题:

确保测试在TestNG套件中失败时继续执行

田德馨
2023-03-14
<suite>
    <test>
        <classes>
            <class name="test1"/>
            <class name="test2"/>
            <class name="test3"/>
            <class name="test4"/>
            <class name="test5"/>
        </classes>
    </test>
</suite>
    null
public class ItineraryViewTest extends TestBase {

@BeforeClass
@Parameters({"login", "username", "password", "userReference"}) 
public void addAPackage(String login, String username, String password){

    if (Objects.equals(login, "true")) {
        loginPage().loginWith(username, password, userReference);
    }


@AfterMethod
public void closeItineraryView(){
    itineraryPage().closeItineraryView();
}

@Test(description = "Tests Itinerary view can be selected")
public void itineraryViewCanBeSelected() {
    itineraryPage().selectItineraryView();

    assertTrue("Itinerary view was not displayed",
            (itineraryPage().itineraryViewDisplayed()));
    }
}

基类:

public class TestBase 
@BeforeClass
@Parameters({"env", "browser", "login", "mode", "emulatorMode"})
public void initialiseTests(String env, String browser, String login, String mode, String emulatorMode) throws MalformedURLException {
    APPLICATION_LOGS.debug("Running @BeforeClass");
    EnvironmentConfiguration.populate(env);
    WebDriverConfigBean webDriverConfig = aWebDriverConfig()
            .withBrowser(browser)
            .withDeploymentEnvironment(env)
            .withSeleniumMode(mode);

   //new driver gets insantiated here in this openBrowser method
    driver = WebDriverManager.openBrowser(webDriverConfig, getClass()); 

 //unrelated code...

@AfterClass
public void afterClass() {
    APPLICATION_LOGS.debug("Running @AfterClass");
    driver.quit();
}

@AfterSuite()
public void afterSuite() {
    APPLICATION_LOGS.debug("Running @AfterSuite");
    extent.flush();
}

共有1个答案

鲜于仰岳
2023-03-14

您使用的是什么版本的testng?旧版本(6.9.somethy)中有一个bug导致了这个问题。

我建议验证您使用的是最新版本。

好吧,代码或StackTrace中没有跳出任何东西...所以可能有很多原因。我唯一的另一个建议是将测试步骤设置为始终运行....如下所示:

@Test(alwaysRun = true)
 类似资料:
  • 我按照cypress在他们的文档中推荐的方式编写测试,即每个测试有多个断言,但是用这种方式编写测试时会出现一个问题,那就是如果断言失败,测试执行就会停止。 我希望每个测试有多个断言,如果其中一个失败,测试将失败,但将继续测试执行,所以在最后,我将能够看到测试中失败的所有断言,而不仅仅是第一个失败的断言。 提前感谢!

  • 问题内容: 编辑:切换到一个更好的示例,并阐明了为什么这是一个真正的问题。 我想用Python编写在断言失败时继续执行的单元测试,这样我就可以在一个测试中看到多个失败。例如: 在这里,测试的目的是确保Car’s正确设置其字段。我可以将其分解为四个方法(这通常是个好主意),但是在这种情况下,我认为将其保留为测试单个概念的单个方法(“对象已正确初始化”)更容易理解。 如果我们认为最好不要破坏该方法,那

  • 我使用的是JUnit5Vintage,所以我的测试任务同时运行JUnit4和JUnit5测试。

  • 问题内容: 我已经使用Jfunc构建了现有框架,该框架提供了即使测试用例中的一个断言失败时也可以继续执行的功能。Jfunc使用junit 3.x框架。但是现在我们正在迁移到junit4,所以我不能再使用Jfunc,而已将其替换为junit 4.10 jar。 现在的问题是,因为我们在框架中广泛使用了jfunc,并且使用junit 4,我们希望使我们的代码即使在测试用例中一个断言失败时也可以继续执行

  • 我使用Jfunc构建了我现有的框架,它提供了一个即使测试用例中的一个断言失败也能继续执行的工具。Jfunc使用junit3. x框架。但是现在我们正在迁移到Junit4,所以我不能再使用Jfunc,而是用junit4.10 jar代替了它。 现在的问题是,因为我们已经在我们的框架中广泛使用了jfunc,并且使用junit4,我们希望让我们的代码继续执行,即使其中一个断言在测试用例中失败。 有人对此