Appium 利用 TESTNG 并行用例踩过的坑

pjl · 2018年04月26日 · 最后由 oly 回复于 2018年04月27日 · 2724 次阅读

参考前辈写的文章:https://testerhome.com/topics/1639,配置同一套代码在多台手机上并行执行用例,期间遇到各种坑,通过反复百度查找终于能跑起来了,记录一下问题和配置过程,方便以后查看。
实验

1、Eclipse 工程路径截图

2、文件编译存放路径

3、小米手机 testng.xml 配置

4、华为手机 testng.xml 配置

5、测试用例

6、小米手机对应的 AppiumServer

7、华为手机对应的 AppiumServer

8、Dos 执行测试用例

按上面配置能跑起来

整套下来花费最长时间的是在 dos 里面执行用例,报各种错误,总结一下执行路径配置
先 Dos 进入,任何目录执行 java -classpath 都可以,下面这个是在 D 盘根目录执行的

D:>java -classpath "D:\workspace_test\autotest\target\classes;D:\mavenJar\org\testng\testng\6.10\testng-6.10.jar;D:\mavenJar\com\beust\jcommander\1.48\jcommander-1.48.jar;D:\testJar\selenium-server-standalone-2.46.0.jar;D:\testJar\java-client-2.2.0.jar" -Djava.ext.dirs=lib org.testng.TestNG -suitethreadpoolsize 2 D:\workspace_test\autotest\testng.xml D:\workspace_test\autotest\testng2.xml

在没有配置环境变量的情况下,引用 JAR 包地址都用绝对路径
问题 1:缺 JAR 包,导入 JAR 包,比如报如下错误,导入 jcommander-1.48.jar

问题 2:报 java.lang.UnsupportedClassVersionError: io/appium/java_client/android/AndroidDriver : Unsupported major.minor version 52.0
百度参考此文章:http://www.mamicode.com/info-detail-543084.html
问题原因:我 eclipse 工程里面导入的 java-client 时 5.0.0 版本,JAVA 环境变量配置的是 JDK1.7,导致执行的时候版本冲突,所以执行的时候指定了 java-client-2.2.0.jar 就没有报错了
解决方法:执行路径里面指定 java-client 为 2.2.0 版本,D:\testJar\java-client-2.2.0.jar

问题 3:执行的时候一直报:Exception in thread "main" java.lang.NoClassDefFoundError:MultiTestCase(wrong name:testcase/MultiTestCase)

这个问题困扰最长时间,原因是在指定编译的 CLASS 文件地址的时候不要带 testcase 路径
我的 class 文件路径是:D:\workspace_test\autotest\target\classes\testcase,每次在执行的时候我就把路径配置成如下:
java -classpath "D:\workspace_test\autotest\target\classes\testcase;
执行一直报错:java.lang.NoClassDefFoundError:MultiTestCase(wrong name:testcase/MultiTestCase)

因为 testng 执行文件配置的测试类加了包名:





在执行的时候再加 testcase 路径就会报错。所以修改路径
java -classpath "D:\workspace_test\autotest\target\classes;

问题 4:执行两条用例的时候一条总是跳过
先检查 AppiumServer 的端口配置
第一个:
General Settings 里的 Port ,改为 4723
Android Settings 里的 Bootstrap Port ,改为 4724

第二个:
General Settings 里的 Port ,改为 4725
Android Settings 里的 Bootstrap Port ,改为 4726

以上都正确,再检查测试用例里面配置的端口,我就是在这步犯错,这里的 port 需要通过 testng 传参过来,根据手机不同,端口号不同
driver= new AndroidDriver(new URL("http://127.0.0.1:+port+/wd/hub),capabilities");

共收到 1 条回复 时间 点赞

并发没看出来。倒是可以添加 maven 管理包

—— 来自 TesterHome 官方 安卓客户端

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册