小编Sug*_*gre的帖子

如何自动化android的升级测试

我们一直在使用espresso进行Android自动化,其中包括升级测试

对于升级测试,我们需要执行3个步骤:

  1. 在旧版本中执行一些操作以准备一些数据
  2. 升级到新版本(封面安装)
  3. 检查旧版本中保存的数据是否已正确保留,升级后无其他问题.

目前我们正以非常笨拙的方式做到这一点:

#Before: prepare data on old version
adb -s $DEVICE shell am instrument -e class com.example.test.upgrade.UpgradeTest#prepareDataIn${version} -w com.example.test/com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner;

#install new version
adb -s $DEVICE install -r new_version.apk;

#After: test after upgrading
adb -s $DEVICE shell am instrument -e class com.example.test.upgrade.UpgradeTest#testUpgradeFrom${version} -w com.example.test/com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner;
Run Code Online (Sandbox Code Playgroud)

我们将升级测试从某个版本分解为2个部分之前/之后,因为我们不知道我们是否能够(以及如何)在测试中安装新版本.

但是,adb命令的这个3步测试看起来很愚蠢,我们无法轻易获得junit报告.

那么有谁知道一个更好的方法来进行Android升级测试,或者你能指出我们做错了什么?

它不仅限于Espresso,如果您正在使用其他框架,您如何使用它进行升级测试?

提前致谢.

junit android automated-tests android-testing android-espresso

14
推荐指数
1
解决办法
749
查看次数

com.apple.CoreSimulator.CoreSimulatorService有什么作用?

自升级到Xcode6以来,我们在模拟器上进行的iOS自动化测试已经发生了灾难.我们可以观察到视图切换速度减慢,UIAutomation也感觉到它并经常返回一个空的或未完全更新的应用程序主窗口,你可以想象稳定性.

部分原因是我们的VM速度很慢,但我们仍然需要找到解决方法.

然后我注意到CoreSimulatorService进程在启动和关闭模拟器之间保持活跃.所以我杀了它,看看会有什么变化:

killall -9 com.apple.CoreSimulator.CoreSimulatorService
Run Code Online (Sandbox Code Playgroud)

它被杀死并重新启动后,模拟器的性能似乎变得更好,至少我看不到随机失败了(希望如此).我想这有点清理.

所以我希望能更好地了解CoreSimulatorService的功能是什么?

此外,当Apple发布新内容时,我很困惑在哪里找到文件(原谅我的无知).例如,除了Xcode Release Note之外,我没有在iOS开发者库中找到提及simctl的任何文档.

谢谢!

xcode ios-simulator ios-ui-automation xcode6

12
推荐指数
1
解决办法
4543
查看次数

gradle connectedAndroidTest返回"No test found",但adb shell am instrument可以找到测试

我们有一个库项目,多个应用程序依赖于它.单元测试在库项目中.我们能够从Android Studio中的依赖项目运行测试,但是

./gradlew :[DependentProject]:connectedAndroidTest 
Run Code Online (Sandbox Code Playgroud)

总是返回"没有找到测试,无事可做".

通过观察,我发现在Android Studio中,它似乎只执行gradle任务:

:[DependentProject]:assembleDebug, :[DependentProject]assembleDebugTest
Run Code Online (Sandbox Code Playgroud)

然后使用adb安装目标并测试apk,adb shell是运行测试的工具.

由于connectedAndroidTest依赖于这两个任务,我安装了它生成的目标和测试apks,并手动调用了instrument命令,测试开始了.

adb shell am instrument -w com.package.test/android.test.InstrumentationTestRunner
Run Code Online (Sandbox Code Playgroud)

然后问题来了,connectedAndroidTest在哪里寻找测试,以及为什么adb仪器可以找不到测试?如何解决这个问题?

android gradle android-testing android-studio android-gradle-plugin

8
推荐指数
1
解决办法
1526
查看次数

Jenkins多配置作业的构建后操作

我试图在多配​​置作业中执行一些后期构建操作,例如,在完成所有配置后检查配置状态,并执行一些脚本(如果其中任何一个完成,结果为FAILURE).

但是,如果我设置了Post Build Task,它将在每个配置的构建过程之后执行,而不是在父作业之后执行.

其他后期构建操作(如触发器构建在其他项目上)只能在父作业之后执行,而可编辑电子邮件通知可以触发矩阵项目或父作业的电子邮件.所以我认为可能有一种方法可以在父作业之后运行脚本.

有人有解决方案吗?

jenkins jenkins-plugins

5
推荐指数
1
解决办法
4261
查看次数

Gradle:无需工具源代码的android工具测试

在使用gradle之前,似乎很容易使用robotium或其他基于仪器的自动化框架进行一些黑盒测试,只需要在AndroidManifest.xml中指定targetPackage

<instrumentation
    android:name="com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner"
    android:targetPackage="xxxx" />
Run Code Online (Sandbox Code Playgroud)

但是gradle期望这样的项目结构:

src/main/
src/androidTest/
Run Code Online (Sandbox Code Playgroud)

它仅使用从主代码(源代码)构建的应用作为测试目标。

并根据Gradle插件用户指南

即使通过defaultConfig和/或Build Type对象自定义了测试应用程序清单中的检测节点的targetPackage属性的值,也会自动为其填充测试应用程序的程序包名称。这是清单的此部分自动生成的原因之一。

这是否意味着我们无法选择targetPackage并在没有源代码的情况下测试应用程序?还是如何使gradle达到目的?

android gradle android-testing android-studio android-gradle-plugin

5
推荐指数
0
解决办法
539
查看次数