在 IBM MobileFirst Test Workbench 中执行记录的测试时出现 NoSuchMethodError

Posted

技术标签:

【中文标题】在 IBM MobileFirst Test Workbench 中执行记录的测试时出现 NoSuchMethodError【英文标题】:NoSuchMethodError when executing a recorded test in IBM MobileFirst Test Workbench 【发布时间】:2016-03-28 15:23:55 【问题描述】:

无法在装有 android 5.0.2 的 Galaxy S5 上播放录制的脚本。

NoSuchMethodError 在 IBM MobileFirst Test Workbench 中执行先前记录的测试时引发。

同样的测试在其他版本的 Android 上运行良好。


按照中描述的步骤 https://developer.ibm.com/mobilefirstplatform/documentation/getting-started-6-3/advanced-topics/testing-mobilefirst-mobile-applications-mobile-test-workbench/ 我创建了自己的 MobileFirst 项目,并将 index.html 稍微更改为:

<!DOCTYPE HTML>
<html>
        <head>
            <meta charset="UTF-8">
            <title>hw</title>
            <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0">
            <!--
                <link rel="shortcut icon" href="images/favicon.png">
                <link rel="apple-touch-icon" href="images/apple-touch-icon.png"> 
            -->
            <link rel="stylesheet" href="css/main.css">
            <script>window.$ = window.jQuery = WLJQ;</script>
            <script>
                  function count_rabbits() 
                    for(var i=1; i<=3; i++) 
                      alert("Rabbit "+i+" out of the hat!");
                  
              
            </script>
            <script src="js/tracekit.js" type="text/javascript"></script>
            <script src="js/MQA.js" type="text/javascript"></script>
        </head>
        <body style="display: none;">
            <!--application UI goes here-->
            Hello MobileFirst
            <script src="js/initOptions.js"></script>
            <script src="js/main.js"></script>
            <script src="js/messages.js"></script>

  <h2>Press the button to start</h2>  

    <input type="button" onclick="count_rabbits()" value="Count rabbits!"/>
</body>
</html>




        </body>
</html>

我构建了应用程序并将其部署在装有 Android 5.0.2 的 Galaxy S5 上。 该应用程序按预期工作。

然后我创建一个测试工作台项目。 通过我的手机使用 IBM Rational Test Workbench 客户端,我上传了我的应用程序并记录自己打开它,点击 OK 三次,然后点击返回,然后停止记录并对其进行测试。

测试显示,我可以保存它,我可以启动它。

这里是非脚本的地方。

它运行了一点,它失败了:

An uncaught exception has been thrown in thread Thread[main,5,main]: NoSuchMethodError: No direct method <init>(Lcom/ibm/rational/test/mobile/android/runtime/webkit/WebViewClientWrapper_rtwrenamed;Ljava/net/HttpURLConnection;Ljava/net/URL;[Ljava/lang/String;Ljava/lang/String;)V in class Lcom/ibm/rational/test/mobile/android/runtime/webkit/WebViewClientWrapper$1; or its super classes (declaration of 'com.ibm.rational.test.mobile.android.runtime.webkit.WebViewClientWrapper$1' appears in /data/app/com.myhw-1/base.apk)
    at com.ibm.rational.test.mobile.android.runtime.webkit.WebViewClientWrapper_rtwrenamed.loadRemoteJavascriptsSource(WebViewClientWrapper.java:290)
    at com.ibm.rational.test.mobile.android.runtime.webkit.WebViewClientWrapper_rtwrenamed.loadJavaScriptResource(WebViewClientWrapper.java:242)
    at com.ibm.rational.test.mobile.android.runtime.webkit.WebViewClientWrapper_rtwrenamed.loadAndInject(WebViewClientWrapper.java:205)
    at com.ibm.rational.test.mobile.android.runtime.playback.webkit.RMoTWebDriver$1.run(RMoTWebDriver.java:241)
    at android.os.Handler.handleCallback(Handler.java:739)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:145)
    at android.app.ActivityThread.main(ActivityThread.java:6066)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)

我做错了什么?

带有 jdk 1.8.0_77 的 Windows 7 64 位

C:\>java -version
java version "1.8.0_77"
Java(TM) SE Runtime Environment (build 1.8.0_77-b03)
Java HotSpot(TM) 64-Bit Server VM (build 25.77-b03, mixed mode)

C:\>javac -version
javac 1.8.0_77

露娜与:

Android DDMS 23.0.7.2120684
Android Development Tools   23.0.7.2120684  
Android Hierarchy Viewer    23.0.7.2120684  
Android Native Development Tools    23.0.7.2120684
Android Traceview   23.0.7.2120684  
Eclipse IDE for Java Developers 4.4.2.20150219-0708 epp.package.java    null
IBM Dojo Mobile Tools   7.1.0.00-20160321-2138
IBM jQuery Mobile Tools 7.1.0.00-20160321-2138
IBM MobileFirst Platform Studio 7.1.0.00-20160321-2138
IBM MobileFirst Platform Test Workbench 8.7.0.v20160112_2203  
Tracer for OpenGL ES    23.0.7.2120684

【问题讨论】:

试试 Android 4.x,那里能用吗? 在安卓 4.1.2 的三星 Galaxy SIII mini 上重新录制了四个步骤,效果很好。我什至在按钮上添加了几个验证。 【参考方案1】:

请看这里:Uploading hybrid app to mobilefirst test workbench fails

这是一个已知问题,出现在最新的构建工具版本中

简而言之,RTW 使用“dex2jar”和其他实用工具,它们依赖于 在安卓 SDK 上。如果 sdk 进化(例如新的构建工具),这些 工具也必须升级(它们嵌入在 RTW 中)

最好将 RTW 升级到最新版本以便能够支持 您的 sdk 版本(请联系 IBM 支持。RTW 8702 可用 871 应该在 2015 年 10 月中旬左右上线)

一种解决方法是在 android 中降级您的“构建工具” sdk manager 到旧版本

【讨论】:

我已经在最新的测试工作台上。是否有已知的 RTW 组合——有效的构建工具? 我降级到 build-tools 19.1.0,重建、重新部署、重新上传、重新注册,当我们尝试在 Android 5.0.1 上进行测试时,行为仍然存在。跨度> 您能否在此答案中添加更多详细信息。目前还不清楚我应该做什么。

以上是关于在 IBM MobileFirst Test Workbench 中执行记录的测试时出现 NoSuchMethodError的主要内容,如果未能解决你的问题,请参考以下文章

IBM-Mobilefirst 意外错误中的推送通知

IBM Mobilefirst 和 IBM Bluemix

在 IBM Containers 上运行 MobileFirst 服务器

Eclipse 氧气找不到 IBM MobileFirst Studio

IBM MobileFirst 服务器预览

IBM MobileFirst 8.0 Neon 插件