在本文中,我提醒您注意有关安装和配置TeamCity的说明,以在Windows下自动组装和测试Android项目。我还将关注为Android项目(在研究过程中发现的)设置环境的功能,以及可以帮助新手测试人员和开发人员简化生活的各种事情。目标:
更新项目代码时,应发生以下情况:- 自动建立专案
- 运行UI自动测试
- 导出调试并释放APK文件以进行后续手动测试
- 通知所有开发团队成员结果
计划:
- 安装和配置Java JDK
- 安装和配置Android SDK
- 为调试设置单独的gradle
- 准备一个Android项目
- 安装TeamCity Server和Build Agent
- 设置TeamCity Project→为项目构建进行构建并获取安装APK
- 使用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
处理完成。您还可以在单独的步骤中上载报告。默认情况下,它保存在项目文件夹中。非常感谢您的关注!如果有人对改进步骤代码有任何建议,以及对改进的建议,我将不胜感激。