我想针对特定的构建类型运行单元测试和浓缩咖啡测试用例

Posted

技术标签:

【中文标题】我想针对特定的构建类型运行单元测试和浓缩咖啡测试用例【英文标题】:I want to run unit test and espresso test cases a specific build type 【发布时间】:2018-10-07 08:37:46 【问题描述】:

我有一个多个 falvoured 和多个构建类型的项目..有一些 espresso 和单元测试用例正在成功运行,但为了成功运行它们我已经模拟了我的 api 响应目前我在 android studio 中手动将构建类型更改为 staging 和然后运行这些测试。现在我正在将我的项目与 jenkins 集成,在 jenkins 中我的测试失败了,因为 jenkins 正在所有构建类型上运行测试用例.. 长话短说,我希望我的测试用例仅使用 staging 构建类型运行..

【问题讨论】:

如果没有您提供的更多信息,我无法提供答案,但我认为您可以按照我的回答来做您想做的事情:***.com/questions/31819619/… @jdonmoyer 我已经这样做了,但没有成功 感谢您的耐心等待。我的回答比我之前的评论更详细。 @Code-Apprentice 快乐是我的.. :) 【参考方案1】:

如android test support flavors and build type variants? 中所述,您可以为特定口味创建androidTesttest 文件夹。您还可以将其扩展为构建类型。 Gradle 允许您为构建类型和风格的任何特定组合构建测试。

假设您有两种构建类型(stagingdebug)和两种风格(trialfull)。以下都是有效的文件夹名称:

src/androidTestStaging - 为所有风格的 staging 构建运行测试 src/testFull - 为所有具有 full 风格的构建运行测试 src/androidTestTrialDebug - 仅在 trial 风格的 debug 构建上运行的测试 src/testFullStaging - 仅在 full 风格的 stagins 构建上运行的测试

每个文件夹的目录结构分别与androidTesttest 完全相同。每个文件夹中的测试只会针对由所有指定的构建类型和风格组成的构建运行。

请注意,这可能会迅速爆发出多种组合。例如,如果您有 3 种构建类型和 2 个风味维度,每个维度有 3 种风味,那么您现在有 27 个不同的构建。为每一项维护测试可能是一场噩梦,因此您仍应遵循标准的软件工程实践来编写可尽可能重用的测试和帮助程序类和函数。

【讨论】:

非常感谢@Code-Apprentice .. 我想在这里再添加一件事.. 我有多种口味和多种构建类型,所以在您对 cme​​ts 的回答的帮助下***.com/questions/48895869/… 。 . 我最终制作了像 testFlavourARelease 、 testFlavourADebug、testFlavourAStagging (用于单元测试)这样的目录,同样适用于浓缩咖啡。 现在这是一个完美的答案。希望对其他人有所帮助 @Code-Apprentice 我已经尝试过您的解决方案,但 androidTest 的来源无法被 android studio 识别。如果你会这么好,请检查与此问题密切相关的我的问题。 ***.com/questions/56112541/… @Code-Apprentice 你应该更正你的答案,不可能为每个构建类型创建单独的 androidTest 文件夹。这仅适用于构建 flavorsexclusively 用于调试构建类型(androidTestDebug)!例如。如果您有以下构建类型:调试、发布和集成,则无法为集成构建类型的仪器测试创建 androidTestIntegration 目录,您唯一可以添加的是 androidTestDebug。通过执行./gradlew sourceSets可以查看哪些sourceSets是允许的。 @Code-Apprentice 不幸的是,在文档中没有关于这个问题的任何内容,我通过测试来到了那个 coclunsion - 我不确定这是一个错误还是一个功能。您可以在新项目中尝试。对我来说最重要的线索是./gradlew sourceSets,它没有列出androidTestIntegration sourceSet,最重要的是,android gradle 插件似乎已经放弃了对添加新自定义 sourceSets 的支持:https://***.com/questions/49601232/the-sourceset-commontest-is-not-recognized-by-the-android-gradle-plugin-perha#comment99352101_49601232【参考方案2】:

Code-apprentice回答 关于this问题

如果您想针对特定的构建类型运行测试,您可以在文件夹名称中指定它:src/androidTestStaging 或 src/testStaging。您可以结合构建类型和风格来运行特定的测试:src/androidTestTrialStaging 或 src/testFullDebug。

【讨论】:

以上是关于我想针对特定的构建类型运行单元测试和浓缩咖啡测试用例的主要内容,如果未能解决你的问题,请参考以下文章

指纹读取器浓缩咖啡测试

勺子和浓缩咖啡测试

如何在针对特定 Gradle 构建风格的同时从命令行运行单个单元测试方法

手机睡着的浓缩咖啡测试

是否可以截屏并用浓缩咖啡测试像素值?

浓缩咖啡测试失败,进度对话框未从顶部删除