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

@不执行AfterClass

年业
2023-03-14

在我的测试中,自动化在两个移动设备上运行测试,并与testNG feamework并行。@BeforeClass和@AfterClass方法位于所有其他测试类继承的基类(超级)中。BeforeClass方法初始化驱动程序会话,AfterClass终止会话。

问题是@AfterClass没有执行。因此,驱动程序会话没有终止,随后对BeforeClass的调用也因此失败。这导致每个类中只执行第一个测试——其余的都没有。

我想知道是否有人遇到过这个。。。原因/补救方法是什么!

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Parallel Mobile Tests" parallel="tests" thread-count="2"
    preserve-order="true" configfailurepolicy="continue">
    <parameter name="browserTypes" value="Mobile OS" />

    <listeners>
        <listener class-name="my.listeners.TestListener" />
        <listener class-name="my.listeners.CustomReportListener" />
    </listeners>

    <test verbose="2" name="IPHONE_6SPLUS : Parallel Tests">
        <parameter name="device" value="IPHONE_6SPLUS" />
        <parameter name="deviceOS" value="iOS" />
        <classes>
            <!-- ALL INSTALL TESTS -->
            <class name="my.tests.Install" />
            <class name="my.tests.Class1_tests" />
            <class name="my.tests.Class2_tests" />
            <class name="my.tests.Class3_tests" />
            <class name="my.tests.Class4_tests" />
            <class name="my.tests.Class5_tests" />
        </classes>
    </test>

    <test verbose="2" name="IPHONE_SE : Parallel Tests">
        <parameter name="device" value="IPHONE_SE" />
        <parameter name="deviceOS" value="iOS" />
        <classes>
            <!-- ALL INSTALL TESTS -->
            <class name="my.tests.Install" />
            <class name="my.tests.Class1_tests" />
            <class name="my.tests.Class2_tests" />
            <class name="my.tests.Class3_tests" />
            <class name="my.tests.Class4_tests" />
            <class name="my.tests.Class5_tests" />
        </classes>
    </test>

</suite> <!-- Suite -->

共有1个答案

阮鸿煊
2023-03-14

你的基类是公开的吗?下面的示例对我很有用。

public abstract class A {

 @AfterClass
 tearDown() {...}

}

class B extends A {  

 @Test
 doTests() {...}

}

您也可以尝试@AfterClass(alwaysRun=true)

 类似资料:
  • 最近,我将Cucumberinfo.cukes迁移到io.cucumber,将Junit4迁移到Junit5,因为执行不适用于我的java版本。 我的主页 我的Pom

  • 问题内容: 我正在阅读《 使用Rails进行实用敏捷的Web开发》第4版 ,但我使用的是Rails 3.2.2而不是书中建议的3.0.5: 包括AJAX以便重新绘制购物车而不重新加载页面时,我陷入了困境。这是line_items_controller.rb中的创建动作: 这是我的RJS文件create.js.rjs(在app / views / line_items下): 但是,当我单击启动此操作

  • 我需要在我的服务器上运行函数 但是由于安全原因被禁用,但是PHP执行函数正在运行和。 是否可以使用php函数执行相同的操作? 禁用功能 链接,符号链接,执行,通过,proc_close,proc_get_status,proc_open,shell_exec,系统,流行,关闭

  • 我编写了两个功能文件,每个功能文件打开不同的浏览器URL,例如一个是open google。com和secnd一个开放的亚马逊。但事实并非如此。 两个浏览器都打开了谷歌。通用域名格式。此外,它不能与浏览器交互,任何编码到浏览器的操作都不会执行。此外,关闭第一个浏览器会导致第二个浏览器出现空指针异常。 cucumber版本6我从AbstractCucumberTesNG继承开始。然后我创建登录。功能

  • 首先,我在中进行一些初始化,我希望操作符只有在完成之后才启动。 这意味着当运算符启动时,将被initalized。 以下是我订阅的这个可观察到的 返回一个Observable,它将订阅这个Completable,一旦完成,它将订阅{@code next}ObservableSource。来自此Completable的错误事件将传播到下游订阅服务器,并将导致跳过Observable的订阅。

  • 问题内容: 我面临一个非常烦人的问题。我已经在Notepad ++中编写了一些SQL脚本。现在,当我尝试通过SQL * Plus(在Windows 7上通过命令行)执行它们时,出现诸如的错误。 然后,我将脚本复制并粘贴到“ SQL Developer工作表”窗口中,单击“运行”按钮,脚本执行成功,没有任何问题/错误。 经过长时间的调查,我开始认为SQL * Plus的某些空白(包括换行符和制表符)