【问题标题】:QAF: com.qmetry.qaf.automation.step.StepInvocationException: Unable to Instantiate JavaStep: <stepDefinition Method name>QAF:com.qmetry.qaf.automation.step.StepInvocationException:无法实例化 JavaStep:<stepDefinition 方法名称>
【发布时间】:2020-06-30 08:01:21
【问题描述】:

我们将 QAF 用于我们的移动自动化。 .bdd 文件中有一个步骤很常见,实际上也是许多测试的第一步。

    META-DATA: {"author":"<XXX>","description":"SRS-HLP-001-001", "fullReset":true ,groups:[ "EXISTING_USER" , "IOS" , "ANROID" , "REGRESSION_1" , "HELP" ]}
    Given User waits for sometime

步骤定义为:

    @QAFTestStep(description = "User waits for sometime")
    public void stepDefinitionMethodName() throws InterruptedException {
        Thread.sleep(5000);
    }

在执行测试时,我发现测试实际上经常被跳过,而且是随机的。 以及失败的原因:

com.qmetry.qaf.automation.step.StepInvocationException:无法实例化 JavaStep:[]

Eclipse/TestNG 报告不显示除此之外的任何内容。

Appium 日志这样说:

[debug] [XCUITest] 检查应用程序'/var/folders/_j/9fbrggk96v3b44hlbshdp9tm0000gn/T/2020219-5328-duszjq.92kdd/Payload/.app' 是否实际存在于文件系统中[错误] [XCUITest] 错误: 连接到端口 51487 被拒绝 [错误] [XCUITest] 在 Usbmux.connect (/Applications/Appium.app/Contents/Resources/app/node_modules/appium-ios-device/lib/usbmux/index.js:183:13) [info] [DevCon Factory] ​​在任何端口号上释放 202bc3b5a4c4571e98c08785b278002c7deed0f3 设备的连接 [info] [DevCon Factory] ​​没有找到缓存的连接 [调试] [BaseDriver] 事件 'newSessionStarted' 记录在 1584634979919 (21:52:59 GMT+0530 (IST)) [debug] [W3C] Encountered internal error running command: Error: Connection was denied to port 51487 [调试] [W3C] 在 Usbmux.connect (/Applications/Appium.app/Contents/Resources/app/node_modules/appium-ios-device/lib/usbmux/index.js:183:13) [信息] [HTTP]

在下一次运行中,同样的测试可能会通过。

查看步骤实现,非常简单,因为它使用 thread.sleep 等待 5 秒。 我想不出这个测试步骤应该抛出上述错误的任何原因。

上述步骤来自以下场景。我删除了上述步骤并重新执行了测试。再次失败,如下所示:

#SRS-HLP-001-001
SCENARIO: <description>
META-DATA: {"author":"<XXX>","description":"SRS-HLP-001-001", "fullReset":true ,groups:[ "EXISTING_USER" , "IOS" , "ANROID" , "REGRESSION_1" , "HELP" ]}
    Given User accepts Alert box if any
    And Verify user is navigated to home screen, else login with "${login.user_name}" and "${login.password}"
    And User accepts Alert box if any
    Then Verify main Help screen will be displayed Help tab is clicked
END

@QAFTestStep(description = "User accepts Alert box if any")
    public void acceptAlerts() throws InterruptedException {
        handleBTPermissionAlert();
        handlePNSPermissionAlert();
    }

这是eclipse中的错误:

com.qmetry.qaf.automation.step.StepInvocationException:无法实例化 JavaStep:acceptAlerts[]

这是监听器的详细信息:

<test enabled="true" name="Help">
        <parameter name="env.resources"
            value="resources/data;resources/ios" />
        <parameter name="step.provider.pkg"
            value="qaf.<xxx>.tests;qaf.<xxx>.steps;qaf.<xxx>.ios.steps" />
        <parameter name="appium.capabilities.app"
            value="<path to the app>" />
        <parameter name="scenario.file.loc" value="scenarios/Help.bdd" />
        <classes>
            <class>
                name="com.qmetry.qaf.automation.step.client.text.BDDTestFactory" />
        </classes>
    </test>

这是使用的 ivy.xml。

<ivy-module version="2.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
    <info organisation="com.qmetry" module="QAF" status="integration">
    </info>
    
    <dependencies>
        <dependency org="com.qmetry" name="qaf" rev="2.1.15" force="true"/>
        <dependency org="com.qmetry" name="qaf-support" rev="2.1.13" />
        <dependency org="com.qmetry" name="qaf-support-ws" rev="2.1.15" />
        <dependency org="org.aspectj" name="aspectjtools" rev="1.9.5"/>
        <dependency org="org.aspectj" name="aspectjweaver" rev="1.9.5" />
        <dependency org="ant-contrib" name="ant-contrib" rev="1.0b3"/>
        <dependency org="io.appium" name="java-client" rev="7.3.0"/>
        <dependency org="org.seleniumhq.selenium" name="selenium-java" rev="3.141.59" force="true"/>
    </dependencies>
</ivy-module>

需要有关如何确保不会经常跳过测试用例的帮助。

【问题讨论】:

  • 你会提供异常堆栈跟踪吗?
  • Appium 日志已添加。请看一看。谢谢!
  • 你能分享你使用的 bdd 文件、步骤定义文件和步骤提供程序 pkg 属性吗?
  • 我已经添加了必要的细节。请看一看。

标签: java mobile appium qaf


【解决方案1】:

问题看起来与 appium 更相关。如果问题来自步骤stepDefinitionMethodName 实现,您可以尝试如下更新:

@QAFTestStep(description = "User waits for sometime")
public void stepDefinitionMethodName() {
    QAFTestBase.pause(5000);
}

@QAFTestStep(description = "User accepts Alert box if any")
public void acceptAlerts(){
    try{
       handleBTPermissionAlert();
       handlePNSPermissionAlert();
    }catch(InterruptedException e){
       throw new AutomationError(e);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-10
    • 1970-01-01
    • 1970-01-01
    • 2015-01-17
    • 1970-01-01
    • 2014-04-07
    • 2022-01-03
    相关资源
    最近更新 更多