Android Gradle 应用程序:connectedCheck 从依赖项运行测试

2023-11-21

我有一些有自己的测试的图书馆项目。我不负责这个库项目,也不关心它的测试,但是,当我运行时gradle :app:connectedCheck它运行我的测试,但它也运行依赖项的测试。有什么办法可以防止这种情况发生吗?

我应该提到我的依赖项不在app我所说的模块。

编辑:更具体地说,我所依赖的库项目有非常长的测试,因为它们应该在凌晨 2 点在构建服务器上运行,所以我坐在这里等待油漆干燥,只是为了运行我的非常短的测试测试。

EDIT2:我也尝试过使用 Spoon。我现在已经设置好了,可以运行各个类,但我想在一个包中运行所有内容。那可能吗?

EDIT3:文件夹结构无关紧要,但这是一个非常非常不详细的外观:

root
-some_library_project
-main_project
-settings.gradle

main_project build.gradle 看起来像这样。我应该提到 Spoon 目前什么也没做,但我的选择是开放的:

buildscript{
 repositories {
     jcenter()
 }
 dependencies{
     classpath 'com.stanfy.spoon:spoon-gradle-plugin:0.10.+'
 }
}

apply plugin: 'com.android.application'
apply plugin: 'spoon'

android {
    compileSdkVersion 20
    buildToolsVersion '20.0.0'

 defaultConfig {
    applicationId "com.something.main_project"
    minSdkVersion 17
    targetSdkVersion 20
    versionCode 1
    versionName "1.0"

    testPackageName "com.something.main_project.test"
    testInstrumentationRunner "android.test.InstrumentationTestRunner"

 }

 signingConfigs {
    debug {
        storeFile file("debug.keystore")
    }

    release {
        storeFile file("release.keystore")
        storePassword "something"
        keyAlias "something"
        keyPassword "something"
    }
 }

 buildTypes {
    release {
        runProguard false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.release
    }
    debug{
        signingConfig signingConfigs.debug
    }
 }

}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])

    compile project(':some_library_project')

    androidTestCompile 'com.squareup.spoon:spoon-client:1.1.0'
}

spoon {
    if (project.hasProperty('spoonClassName')){
        className = project.spoonClassName
    }
}

您有 Spoon 插件,但正在运行gradle :app:connectedCheck。首先,进行这些更改,然后运行gradle spoon

注释掉 androidTest.setRoot 除主包之外的任何其他 build.gradle

将这些添加到build.gradle主包的内容:

标签下android

sourceSets {  //this one may not be needed. But wont hurt.
    androidTest.setRoot('src/androidTest')
}

Modify spoon tag:

 spoon {
     debug = true
     testSizes = ['small', 'medium', 'large']   <<--- Change this to run specific test sizes
     if (project.hasProperty('spoonClassName')){
        className = project.spoonClassName
     }
  }

To run

所有测试:

梯度勺

具体测试类

gradle Spoon -PspoonClassName = [THE.PACKAGE.NAME]


Edit

阅读您的编辑“Edit2”后,我发现这只会指定要运行的某个类,而不是特定的包。不幸的是,我还没有找到解决方案,只有一个解决方法。我构建了一个 bash 脚本,并在其中添加了要测试的类,如下所示:

Step 1:在 Android 项目的根目录下创建一个文件:runAllTests.sh

Step 2: Edit .sh看起来像这样:

 #!/bin/sh
 date +%b-%dT%H.%M > timestamp.out

 sites="$HOME"/path/to/project/root

 timestamp="$(cat "$sites"/timestamp.out)"
 result_folder="$sites"/results
 destdir="$result_folder/Results-$timestamp"

 mkdir -p "$destdir"
 echo "Directory created: ${destdir##*/}"

  <---------- Here you start running the test --------------->

  echo "Starting Master Setup"
  gradle spoon -PspoonClassName=com.espresso.test.MasterSetup
  cp -r "$sites"/app/build/spoon "$destdir"/MasterSetup
  echo "Results saved to MasterSetup"

  echo "Starting WorkoutSchedule"
  gradle spoon -PspoonClassName=com.espresso.test.CupcakeSchedule
  cp -f "$sites"/app/build/spoon "$destdir"/WorkoutSchedule
  echo "Results saved to WorkoutSchedule"

  echo "Starting Setting.test"
  gradle spoon -PspoonClassName=com.espresso.test.Settings
  cp -r "$sites"/app/build/spoon "$destdir"/Settings
  echo "Results saved to Settings"

Step 3:给脚本权限

  1. cd到脚本
  2. type chmod u+x runAllTest.sh

那么,这是做什么的:

  1. 首先,它创建一个 timestamp.out。我使用它是为了可以一遍又一遍地将结果保存到文件中,而不会覆盖以前的结果。您不需要这部分。

  2. 接下来,它会在项目的根目录中创建一个结果文件夹(如果尚不存在)。

  3. 然后,它将在结果文件夹中创建一个名为 Results-SOME-DATE 的文件夹。

  4. 最后,每个测试都会运行,并将结果保存到项目的正常位置。 (在 build/spoon 内)测试完成后,它将把结果复制到结果文件夹中,并适当地命名每个测试结果,以便轻松查看运行的所有测试。

NOTE:该脚本是为 MAC 编写的。如果您使用的是 Windows 或其他任何设备,则此脚本可能需要修改。


此外:你会发现打开每个文件夹来获取文件很不方便index.html打开。所以我写了这个脚本来添加到你的bash_profile:

function open-results () {
# the browser to open up `index.html' in.
browser='/Applications/Google Chrome.app/Contents/MacOS/Google Chrome'

# let the user know what directory we're looking in
printf "looking in %s" "$(pwd)"
echo ...

for paths in $(find ./ -name 'debug' -type d); do
  for files in $(find "$paths" -name 'index.html'); do
    open -a "$browser" "$files"
  done
done
echo done
}

现在,cd 到Results-SOME-DATE,然后输入open-results. Again,这是为 bash 编写的。您可能需要根据您的操作系统进行修改。但结构应该是一样的

我希望这有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android Gradle 应用程序:connectedCheck 从依赖项运行测试 的相关文章

随机推荐

  • 具有其他项目依赖项的 Eclipse 插件项目

    我有一个 Eclipse 插件项目 它依赖于我的 Eclipse 工作区中的其他项目 在 Java Build Path gt Projects 选项卡下添加项目依赖项 并在 Order and Export 中选择项目后 我收到 java
  • Windows Phone 8.1 中 ListView 中行的交替颜色

    我创建了一个 Windows Phone 8 1 运行时应用程序 我正在使用ListView控件 我想交替每个背景行的颜色 搜索后我发现了这个链接以前的答案 但这会导致标记错误 一方面 没有 AlternationCount 属性 我假设这
  • python 无法设置内置/扩展类型“object”的属性

    Python 似乎不允许您将属性分配给 对象 的内部最高级别 object lst lambda o list o Or func lambda o list o setattr object lst func 所有这些都会生成错误消息 背
  • 将鼠标悬停在 Chrome 开发工具中的变量上不显示当前值?

    将调试器放入 js 文件后 将鼠标悬停在 Chrome 开发工具中的变量上时 不会显示该变量的当前值 我使用的是 Chrome 版本 79 0 3945 88 官方版本 64 位 正如 wOxxOm 和 adam0101 正确指出的那样 这
  • 重置累计金额?

    我有以下数据集 表 stk S Date Qty OOS Out of Stock 1 true 0 false 01 01 2013 0 1 02 01 2013 0 1 03 01 2013 0 1 04 01 2013 5 0 05
  • 分割数据表

    我有一个 data table 我想将其分成两个 我这样做如下 dt lt data table a c 1 2 3 3 b c 1 1 2 2 sdt lt split dt dt b 2 但如果我下一步想做这样的事情 sdt 1 c N
  • 'git pull origin mybranch' 使本地 mybranch N 次提交先于原点。为什么?

    我刚刚观察到一些奇怪的事情git pull 我不明白 星期五 我在当地的一家分公司工作 我们就这样称呼它吧mybranch 在离开办公室之前 我将其推送到了 origin 这是我的 github 存储库 git push origin my
  • ASP.NET MVC:AJAX ActionLink - 以 HTML 属性为目标

    我有一个 Ajax 操作链接 它在控制器方法中请求一个字符串 我想将该字符串插入到超链接的属性中 如何指定目标id元素的属性字段 img src public string actionChange ViewData src somethi
  • java 数组的自定义排序

    我有一个 有一些数字 距某个点的距离 我想在第一个数组中创建一个索引数组 其中索引按距离排序 e g suppose double dist new double 5 3 2 1 4 7 3 2 2 9 1 然后我想得到一个像这样的数组 i
  • Android Studio 3.0 Canary 1下无法编译

    我尝试在 AS 3 0 Canary 1 下编译我的 Android 项目 在 AS 2 3 2 稳定版本上工作正常 但失败并出现以下错误 FAILURE Build failed with an exception What went w
  • 在 Rails3 中将块传递给标签助手

    我想用一些嵌套元素创建标签标记 我正在使用标签助手并尝试将内部 html 作为块传递 但生成的 HTML 看起来并不像我预期的那样 雇员福利局 span Span element span span Inner span span HTML
  • 如何在 Maven settings.xml 中设置存储库的顺序

    我的 settings xml 中有 3 个存储库 因为我需要所有这些存储库的工件 每当找不到依赖项时 Maven 就会尝试 Downloading http some server mvn2repo releases org apache
  • MySQL 按最高值选择 DISTINCT

    我有一桌子杂志 需要提取每本杂志的最新一期 我试过了 SELECT DISTINCT magazine FROM product p INNER JOIN SELECT title MAX onSale AS Latest FROM pro
  • 如何将 C++ 成员函数作为参数传递给 C API

    在我的 C 程序中 我需要调用这个 c API GConn gnet conn new const gchar hostname gint port GConnFunc func 其中 GConnFunc 定义为 void GConnFun
  • PHP速度测试当前页面无回显的用户连接速度

    我正在寻找一种检查用户连接速度的可能性 它应该被保存为cookie 如果速度慢的话 javascript文件以及css文件将被适配 我目前测试速度的可能性如下 kb 512 flush echo start time 0 time 1 fi
  • 浮点数的符号

    有没有一种简单的方法来确定浮点数的符号 我进行了实验并想出了这个 include
  • 如何使用算法来填充向量的向量

    I have typedef std vector
  • AngularJS $http:如何避免重定向跟随

    在 AngularJS 应用程序中 我对服务器 URL 进行 http post 调用 这个url的成功响应是30x重定向 我的问题是 http post严格遵循这个重定向并在成功回调中返回最终调用的结果 我想拦截此重定向并手动将用户重定向
  • 返回页面中所有 iframe 的 ID

    由于我正在使用的小部件格式 我有一个页面 其中嵌入了多个 iframe 我不会粘贴代码 因为它庞大且笨拙 但它本质上就是这样
  • Android Gradle 应用程序:connectedCheck 从依赖项运行测试

    我有一些有自己的测试的图书馆项目 我不负责这个库项目 也不关心它的测试 但是 当我运行时gradle app connectedCheck它运行我的测试 但它也运行依赖项的测试 有什么办法可以防止这种情况发生吗 我应该提到我的依赖项不在ap