AWS 设备场是不是支持带有 serenity BDD 和 Gradle 的 Appium?
Posted
技术标签:
【中文标题】AWS 设备场是不是支持带有 serenity BDD 和 Gradle 的 Appium?【英文标题】:Does AWS device farm supports Appium with serenity BDD & Gradle?AWS 设备场是否支持带有 serenity BDD 和 Gradle 的 Appium? 【发布时间】:2019-02-16 20:44:04 【问题描述】:我想使用 AWS Device Farm 进行移动应用程序测试,但根据他们的文档,我看不到对 Appium with Serenity BDD & Gradle
的任何支持。
我已经看到 AWS 设备场支持以下内容
测试类型配置
Appium JUnit
Appium TestNG
Built-in: Explorer
Built-in: Fuzz
Calabash
谁能确认设备场是否支持Appium with Serenity BDD & Gradle
?我在他们的论坛中找不到这个答案。
如果支持,还可以分享一些例子吗?
谢谢
Vamc
【问题讨论】:
你找到anwser了吗? 还没有@alansiqueira27 【参考方案1】:我相信在 Device Farm 中安排运行时,使用 custom environments 选项应该可以做到这一点。诚然,我没有平静的经验,但这里是使用黄瓜测试的博客。
https://aws.amazon.com/blogs/mobile/testing-mobile-apps-with-cucumber-and-appium-through-testng-on-aws-device-farm/
看起来宁静与黄瓜相似或延伸,因此理论上这可能有效。
[编辑]
以下是一些简短的 gradle 构建任务,它们应该有助于为 Device Farm 创建测试包。
注意:这假设依赖项在 build.gradle 文件中的结构如下:
dependencies
testCompile(
'net.serenity-bdd:serenity-junit:2.0.18',
'net.serenity-bdd:serenity-cucumber:1.9.20',
'org.assertj:assertj-core:3.11.1',
'ch.qos.logback:logback-classic:1.2.3',
'io.github.bonigarcia:webdrivermanager:3.0.0'
)
示例 build.gradle 代码
//source: https://***.com/a/27455099/8016330
task getDeps(type: Copy)
from sourceSets.test.runtimeClasspath
// if you need this from the dependencies in the build.gradle then it should be :
// from sourceSets.main.runtimeClasspath
into 'build/libs/dependency-jars'
//packaging tests task which is generated from sample using gradle init
task packageTests(type: Jar)
dependsOn getDeps
from sourceSets.test.output
classifier = 'tests'
//create zip archive
//source: https://***.com/a/36883221/8016330
task zip(type: Zip)
dependsOn packageTests
from 'build/libs/'
include '*'
include '*/*' //to include contents of a folder present inside dependency-jars directory
archiveName 'zip-with-dependencies.zip'
destinationDir(file('build/libs/'))
那么您应该可以使用以下命令创建 zip 文件:
./gradlew clean zip
注意:您需要使用 clean 命令,否则它会将之前的 zip 存档打包到新的 zip 存档中。
第
-詹姆斯
【讨论】:
谢谢你的回答,但我看到你分享的那个链接上有黄瓜和testNG,它是maven。我对 gradle 很平静,这对我不起作用,因为我尝试在 build.gradle 上使用设备场配置并且不支持设备场插件。 所以更多的是如何打包测试还是 Gradle 插件的问题?应该可以使用 Gradle 打包测试,但我需要花更多时间来编写解决方案。看起来 Gradle 也有自动转换 guides.gradle.org/migrating-from-maven/#automated_conversion 所以我们可以在 maven 项目中运行 Gradle init,这可能会创建所需的任务 看起来它是 gradle 插件的问题,因为当我重建项目时,抛出错误The android or android-library has not been applied yet Open File
其中打开的文件是一个链接,点击导航到 build.gradle 上的 apply plugin: 'devicefarm'
行而且我正在使用带有 gradle 的 serenity 框架,它使用 serenity-junit 和 serenity-cucumber,我不在我的脚本中使用 @Test
。只是从评论中不清楚,因为我的项目已经是一个 gradle 项目,你是说创建一个 maven 项目并运行 gradle init 对吗?
我认为这可能是一个选择是的。但是,听起来这是插件的问题。我会尝试更多地尝试它,然后告诉你我发现了什么。
@vamc 我刚刚更新了答案(抱歉耽搁了)。让我知道这是否有帮助【参考方案2】:
从上面的答案中,我能够构建没有依赖项文件夹的 zip 文件,因此我努力找出如何按照设备场的预期构建具有依赖项的 zip 文件。这是在 build.gradle 文件中添加依赖项的方法,通过上述任务(从上面复制),我们可以看到在 zip 文件中添加了依赖项文件夹。
dependencies
runtime group: 'net.serenity-bdd', name: 'serenity-junit', version: '2.0.18'
runtime group: 'net.serenity-bdd', name: 'serenity-cucumber', version: '1.9.20'
runtime group: 'net.serenity-bdd', name: 'serenity-reports-configuration', version: '1.9.43'
runtime group: 'org.assertj', name: 'assertj-core', version: '3.11.1'
runtime group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.3'
runtime group: 'io.github.bonigarcia', name: 'webdrivermanager', version: '3.0.0'
dependencies
testCompile(
'net.serenity-bdd:serenity-junit:2.0.18',
'net.serenity-bdd:serenity-cucumber:1.9.20',
'org.assertj:assertj-core:3.11.1',
'ch.qos.logback:logback-classic:1.2.3',
'io.github.bonigarcia:webdrivermanager:3.0.0'
)
task getDeps(type: Copy)
from sourceSets.main.runtimeClasspath
into 'build/libs/dependency-jars'
//packaging tests task which is generated from sample using gradle init
task packageTests(type: Jar)
dependsOn getDeps
from sourceSets.test.output
classifier = 'tests'
//create zip archive
task zip(type: Zip)
dependsOn packageTests
from 'build/libs/'
include '*'
include '*/*' //to include contents of a folder present inside dependency-jars directory
archiveName 'zip-with-dependencies.zip'
destinationDir(file('build/libs/'))
【讨论】:
以上是关于AWS 设备场是不是支持带有 serenity BDD 和 Gradle 的 Appium?的主要内容,如果未能解决你的问题,请参考以下文章
每次设备连接并发送数据时,是不是使用带有 aws-iot (wss) 的自定义授权方创建一个新设备?