CI TeamCity-自动化Android和UI测试的构建过程

在本文中,我提醒您注意有关安装和配置TeamCity的说明,以在Windows下自动组装和测试Android项目。

我还将关注为Android项目(在研究过程中发现的)设置环境的功能,以及可以帮助新手测试人员和开发人员简化生活的各种事情。

目标:


更新项目代码时,应发生以下情况:

  • 自动建立专案
  • 运行UI自动测试
  • 导出调试并释放APK文件以进行后续手动测试
  • 通知所有开发团队成员结果

计划:


  1. 安装和配置Java JDK
  2. 安装和配置Android SDK
  3. 为调试设置单独的gradle
  4. 准备一个Android项目
  5. 安装TeamCity Server和Build Agent
  6. 设置TeamCity Project→为项目构建进行构建并获取安装APK
  7. 使用UI自动测试配置构建步骤

主要部分


1. 安装和配置Java JDK

相反,有关安装最新版本的Java普遍的信仰,在其官方网站发布JetBrains公司在Java SDK的建议版本:链接

安装推荐的版本:链接

也安装环境变量:

  • JAVA_HOME-使用CI的SKD Java文件夹的路径。

    示例:

    C:\Java\jdk1.8.0_181
    最好放入系统变量。
  • 路径-带有Java SKD的文件夹的路径,可从命令行使用。

    示例:

    C:\Java\jdk1.8.0_181\bin
    最好放入用户变量。

我们检查安装情况:

在CMD的任何目录中,我们输入: java -version

Java应该回答为:



2. 安装和配置Android SDK

我们不会单独安装Android SDK工具。 Android禁止从命令行创建项目。如果我们立即安装Android Studio,调试可能的错误也将更加方便。

安装最新版本:链接

还安装环境变量:

ANDROID_HOME
示例:C:\Users\1\AppData\Local\Android\Sdk

ANDROID_AVD_HOME
示例:C:\Users\1\.android\avd

路径:

示例:C:\Users\1\AppData\Local\Android\Sdk\platform-tools\-由我们和CI从控制台启动实用程序。

检查:键入CMD:adb --help

获取有关当前版本和可用命令的信息:



路径:

示例: C:\Users\1\AppData\Local\Android\Sdk\emulator\-由我们和CI从控制台启动仿真器。

检查:输入CMD,emulator -version

我们获取有关当前版本的信息:



3. Gradle安装Gradle

包含在Android Studio中,但是我们将在控制台中放置另一个进行调试。

版本并不重要,因为假设该项目将通过Gradle包装器启动。

我建议安装与项目中使用的版本类似的版本,例如Gradle 3.3。连结

我们还安装了环境变量:

GRADLE_HOME-不需要,因为CI将使用Gradle Android Studio。

GRADLE_USER_HOME

示例:c:/gradle-cache

对于Windows Server,实际为没有它,在项目组装期间,所有下载的Gradle库都将存储在C:\Windows\System32\config\systemprofile\.gradle进一步的CI将无法访问这些文件。

路径:

C:\Gradle\gradle-3.3\bin-从命令行方便使用的Gradle文件夹的路径。

检查:我们键入CMD gradle -v

我们收到有关当前版本的信息:



4 . Android项目

4.1的准备。在Android Studio中创建一个测试项目。

键入活动-底部导航活动。稍后将在创建UI测试时派上用场。

4.2。持续禁用Gradle Daemon,以使Gradle Daemon不会在CI中生成:

在文件gradle.properties:
add org.gradle.daemon=false

4.3中添加。我们还会.gitignore根据您的喜好添加文件,以 使多余的文件不会留在VCS中。 4.4。在项目文件夹中创建一个密钥库(或使用现有的密钥库)。连结

.gradle
.idea
/build/
local.properties





4.5。将指向密钥库的链接添加到Gradle,以便我们构建完整的APK。

例:

android{  
    ... //  
    signingConfigs {
        release {
            storeFile file("keystorefile.jks") //        
            storePassword "Password" //  
            keyAlias "android" // keyAlias,     
            keyPassword "Password" //  APK
        }
    }

    ... //  
     buildTypes {
        release {
            ... //  
            signingConfig signingConfigs.release //  APK
        }
    }
} 

4.6。为了测试系统的运行状况,我们将从命令行组装一个新项目。输入CMD:

cd < >

例如:C:\Users\1\Documents\GitHub\Command2

转到项目。

输入:我们正在

gradlew assembleDebug

等待组装完成。

如果一切顺利,那么我们将获得结果BUILD SUCCESSFUL。



我们转到项目文件夹:app\build\outputs\apk\debug

它包含一个新的APK文件,可以将其安装在设备上,并检查是否一切正常。

4.7。我们还将检查是否已启动SDK工具和AVD管理器。

4.7.1。启动Android Studio并创建一个模拟器。您当然可以在命令行上创建它,但是我们已经安装了UI Shell,不使用它是一个罪过。

工具→AVD管理器:



创建的模拟器的SDK版本必须至少与我们的SDK项目一样大。

4.7.2。创建了一个模拟器。让我们从控制台检查其启动。我们在命令行输入:

start /min emulator -avd < >

示例:

start /min emulator -avd Pixel_2_API_25

请注意,我们使用一个函数/min在后台启动仿真器。否则,他将不允许在CMD中输入新命令。
设备正在运行:



4.7.3。我们检查收集的APK的安装。

我们输入CMD:

adb install <path_to_apk>

示例:

adb install C:\Users\1\Documents\GitHub\Command2\app\release\app-release.apk

成功:



4.7.4。我们检查已安装APK的启动。

我们输入CMD:

adb shell monkey -p < > -c android.intent.category.LAUNCHER 1

示例:

adb shell monkey -p com.panarik.command -c android.intent.category.LAUNCHER 1

应用程序启动:



4.7.5。我们将项目上载到远程存储库,例如GitHub。检查是否将下载项目:

安装Git BASH(如果我们使用Git VCS)。连结

我们从远程仓库中克隆项目。在控制台中输入Git BASH:

git clone < .git>

示例:

git clone https://github.com/panarik/Command2.git

我们看到了结果。项目已复制到本地文件夹:



一切就绪,可以安装和配置TeamCity。我们为什么要在命令行中进行练习,而不是立即安装TeamCity。提前确定项目正在运行将更加方便,以便将来在TeamCity的构建阶段中更轻松地定位可能的错误。

5. 安装TeamCity Server和Build Agent

我将不详细描述安装过程。他在官方指南和许多其他资料中。我建议将TeamCity服务器端口设置为非标准端口,以便计算端口扫描更为困难。

6. 配置TeamCity项目→构建

在常规设置中,您只需要设置APK输出的路径即可:

示例:

app\build\outputs\apk\release\app-release.apk



6.1。设置TeamCity VCS根目录

一切都是标准的。在我们的项目中,我们使用Git,因此我们输入了它以及指向远程仓库的链接。示例:

https://github.com/panarik/Command2.git



6.2。 TeamCity构建配置

添加一个构建步骤,该步骤将编译项目并显示APK。在我们的项目中,我们使用Gradle。

在[Gradle任务]字段中输入:

clean build assembleDebug --no-daemon(-以防万一,以防万一,这应该作为我们在第4.2节中所做的文件的下标)。



单击运行,我们将获得APK。

7. 使用UI自动测试配置构建步骤我们

到了最有趣的部分,即UI测试的自动启动。

将使用.BAT文件启动步骤。编写代码,即时更改代码而无需进入TeamCity UI等更加方便。

7.1。首先,在仿真器运行的情况下创建一个构建步骤。

您可以完全创建BATnik的URL,为方便起见,我在TeamCity中创建了环境,BAT_FILES并使用BATniks指向文件夹的路径:我们



在文件中写入了仿真器启动代码。

示例:

start /min "emulator" /D "C:\Users\1\AppData\Local\Android\Sdk\emulator" emulator.exe -avd Pixel_2_API_25 -no-snapshot-save -no-boot-anim
异地命令和参数的列表:link

7.2。在仿真器加载时创建带有暂停的构建步骤。您可以立即在.BAT中注册第一步,但是它将更加清晰。

在Internet上进行监视的此类团队的一个示例:

adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed) ]]; do sleep 1; done; input keyevent 82'

从UI看起来将如下所示:



场外所有团队的列表:链接

7.3。运行测试。

同样从命令行。这里的一切都是个人的。

示例命令:

gradlew connectedDebugAndroidTest

7.4。我们停止模拟器。

示例命令:

adb -s emulator-5554 emu kill

处理完成。

您还可以在单​​独的步骤中上载报告。默认情况下,它保存在项目文件夹中。

非常感谢您的关注!

如果有人对改进步骤代码有任何建议,以及对改进的建议,我将不胜感激。

All Articles