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

如何设置Appium UI测试maven项目与Gitlab CI一起测试Android应用?

富锦
2023-03-14

我现在是一名实习生,刚刚开始自动化测试。我在这里的目标是帮助我的公司为客户端建立CI。

现在,我有一个maven项目,它包含几个使用Eclipse IDE下的Appium java客户端库的测试,这些测试可以在本地运行UI测试。我下一步的目标是用gitlab repo(它已经存在,由android开发人员创建)连接我的测试,但我被困在这里了。谁能帮帮我吗?请尽量具体:

  • 我应该如何设置该选项。gitlab。亚马尔?

非常感谢提前!

共有1个答案

越勇
2023-03-14

既然终于有人对这个问题感兴趣,让我分享我对此的解决方案。

所以,如果你在看这个问题,我假设你已经有了测试套件,你可以在你的机器上本地测试它,或者把你的应用程序安装在模拟器上,或者安装在真实的设备上。现在,您需要阅读更多关于gitlab pipeline和gitlab CI的信息:

>

  • 管道:https://docs.gitlab.com/ee/ci/pipelines.html

    Gitlab CI:https://docs.gitlab.com/ee/ci/quick_start/

    您应该已经注意到,Appium的优势之一是您不需要更改您正在测试的应用程序的任何内容,您正在测试即将投入生产的完全相同的应用程序。要了解更多关于Apppium的信息:

    • http://appium.io/docs/en/about-appium/intro/

    现在,要运行自动化测试,您需要您的测试套件、应用程序和Appium服务器。我们需要做的是添加另一个阶段。gitlab-ci.yml,告诉它

    >

  • 带上新编译的App,编译你的测试套件

    在模拟器/真实设备中安装应用程序

    编译测试套件并运行它。

    为了让事情更容易理解,我们从问题4开始,工作流程:

    所以当代码签入到gitlab时,gitlab运行程序会运行.gitlab-ci.yml中每个阶段的作业,当它运行到你的阶段时,它会执行自动化测试,并注意到它正在你的服务器上运行,所以这意味着你需要在你的服务器上安装Appium,并在尝试运行自动化测试套件时启动并运行它。现在的问题是,你的服务器能这样做吗?如果你想在你的服务器上做自动化测试,你需要在上面安装应用程序、模拟器(可能需要你的服务器配备图形处理器)等等,这些都是维护服务器的问题。替代方案是使用第三方服务,我就是这么做的。原来我们(当我在那家公司的时候)的服务器不能运行自动化用户界面测试,所以我们求助于AWS-ADF(亚马逊设备农场),还有许多其他服务提供商你可以选择,参考链接:

    https://adtmag.com/blogs/dev-watch/2017/05/device-clouds.aspx

    所以我基本上在我的功能测试阶段有一个python脚本,它会抓取新完成的应用程序,自动化测试套件,上传到AWS ADF,然后安排运行,当运行完成时产生结果。

    所以,要回答问题1:

    >

  • 我们需要为我们的功能测试再创建一个阶段。gitlab.yaml,在我的例子中,我有一个阶段functionalTest_project阶段,在编译Android应用程序的阶段之后。然后你在你的阶段中编写必要的cmd脚本,或者如果它太长,你的脚本在另一个文件中(把它放在你的回购中),然后执行它。在我的例子中,我把我的脚本放在python_ci.py,然后在我的阶段中使用“pythonpython_ci.py”执行它。(这里你需要一个有这些需求的docker,也请参见下文)

    您不下载应用程序,而是在您的应用程序上设置应用程序,或者如果您使用云服务,该服务应该为您设置应用程序。

    我所做的是,我使用maven在本地构建并打包测试套件,然后将其推送到gitlab repo,现在我相信更好的方法是在您的functionalTest阶段编译并打包它。gitlab。yml。现在回到问题1的第一点,如何获得maven,我的理解是,这是服务器的一个依赖项,就像python一样,所以它们都可以通过告诉gitlab使用具有python和maven依赖项的docker执行脚本来获得。

    对问题3的答复:

    >

    如何让yml到达测试套件?记住它们在同一台服务器上,所以你可以在你的yml脚本中找到相对路径,告诉yml从哪里获取你的测试套件。

    希望这有帮助!

  •  类似资料:
    • 测试 Android Library 项目类似于测试应用项目。唯一的不同点在于整个库(包括它的依赖)都是自动作为依赖库被添加到测试应用中。结果就是测试 APK 不单只包含自身的代码,还包含了 Library 项目以及它依赖的代码。Library 的 manifest 被组合到测试应用的 manifest 中(引用这个 Library 的项目作为容器)。androidTest task 变为只执行安

    • 主要内容:构建项目,测试项目在上一节中,我们介绍了如何使用 archetype 创建 Maven 项目,接下来我们介绍如何构建和测试这个项目。 构建项目 查看 helloMaven 项目的 pom.xml 文件,配置如下。 从以上配置可知,Maven 已经添加了 Junit 作为该项目的测试框架,且 Maven 也在项目中自动生成了一个源码文件 App.java 和一个测试文件 AppTest.java 。 打开命令行窗口,

    • Gradle 项目也可以通过使用多项目配置依赖于其它 Gradle 项目。 多项目配置的实现通常是在一个根项目路径下将所有项目作为子文件夹包含进去。 例如,给定以下项目结构: MyProject/ + app/ + libraries/ + lib1/ + lib2/ 我们可以定义3个项目。Gradle 将会按照以下名字映射它们: :app :libraries:lib1 :l

    • 如果jar项目不包含启动程序,我如何测试它们? 示例JUnit测试用例头:

    • 问题内容: 该命令仅覆盖一个目录中的文件。 我想要整个项目,这意味着测试应覆盖dir中的所有文件以及该dir下的所有千岁树dir 。 这样做的命令是什么? 问题答案: 这应该在当前目录及其所有子目录中运行所有测试: 这应该针对给定的特定目录运行所有测试: 这应该以前缀为的导入路径运行所有测试: 这应该运行所有带有前缀的测试导入路径: 这应该在$ GOPATH中运行所有测试: