Android的不断扩展设备的生态系统来创建测试应用了独特的挑战。勺旨在通过分发仪器测试执行和显示以有意义的方式的结果,以简化该任务。
相反,试图要测试的一种新形式,使勺现有仪器的测试更加有用。使用应用程序APK和仪器APK,勺同时运行在多个设备上测试。一旦所有测试已完成与每个设备和测试的详细信息生成静态HTML摘要。
勺子将这些都是可见的所有目标运行ADB设备
。插入多个不同的手机和片剂,启动仿真器的不同配置,或者使用两者的某种组合!
在使用的目标的更加多样化,更加有用的输出会在可视化应用程序。
除了简单地运行仪器测试,勺子有在测试过程中然后将其包含在输出捕捉关键点截屏的能力。这使得在不同设备上测试执行的目视检查。
截屏,您需要包括勺子,客户
在你的仪表应用JAR。对于勺子截图保存您的应用程序必须有 WRITE_EXTERNAL_STORAGE
权限。在你的测试中调用的截图
与人类可读的标记方法。
Spoon.screenshot(activity, "initial_state");
/* Normal test code... */
Spoon.screenshot(activity, "after_login");
指定的标签将被用来识别和比较多个测试运行截取的屏幕截图。
您还可以查看每个测试的截图为GIF动画来衡量交互的实际序列。
如果你有文件,这将帮助你在调试或审核。试运行,例如日志文件或SQLite数据库,你可以很容易地保存这些文件,并将它们连接到您的测试报告。这将让你轻松地深入发生在测试运行的任何问题。
附加文件到您的报告,您需要包括勺子客户端
瓶子和你有WRITE_EXTERNAL_STORAGE
许可。
//使用绝对路径字符串
Spoon.save(context, "/data/data/com.yourapp/your.file");
//或文件
Spoon.save(context, new File(context.getCacheDir(), "my-database.db"));
你可以通过点击设备中报告的文件名下载文件。
下载最新的亚军JAR或最新的客户端JAR,或者只是添加到您的依赖关系:
Maven的:
<dependency>
<groupId>com.squareup.spoon</groupId>
<artifactId>spoon-client</artifactId>
<version>1.3.1</version>
</dependency>
摇篮:我们推荐使用gradle这个插件(目前保持为一个单独的项目)。
开发版快照是可Sonatype的的快照
库。
勺子被设计作为一个独立的工具,或直接作为构建系统的一部分来运行。
您可以运行勺子与你的应用程序和仪器的APK一个独立的工具。
Java的罐子勺亚军1.3.1-JAR与 - dependencies.jar \
--apk ExampleApp中,debug.apk \
--test-APK ExampleApp中-调试androidTest-unaligned.apk
默认情况下,输出将被放置在当前目录的勺子输出/文件夹。您可以通过控制其他标志执行额外的参数。
Options:
--apk Application APK
--output Output path
--sdk Path to Android SDK
--test-apk Test application APK
--title Execution title
--class-name Test class name to run (fully-qualified)
--method-name Test method name to run (must also use --class-name)
--no-animations Disable animated gif generation
--size Only run test methods annotated by testSize (small, medium, large)
--adb-timeout Set maximum execution time per test in seconds (10min default)
--fail-on-failure Non-zero exit code on failure
--fail-if-no-device-connected Fail if no device is connected
--sequential Execute the tests device by device
--init-script Path to a script that you want to run before each device
--e Arguments to pass to the Instrumentation Runner. This can be used
multiple times for multiple entries. Usage: --e <NAME>=<VALUE>.
The supported arguments varies depending on which test runner
you are using, e.g. see the API docs for AndroidJUnitRunner.
如果你正在使用Maven的编译,插件提供了易于执行。声明插件在pom.xml中
的仪器测试模块。
<plugin>
<groupId>com.squareup.spoon</groupId>
<artifactId>spoon-maven-plugin</artifactId>
<version>1.3.1</version>
</plugin>
该插件会寻找一个APK
为相应的应用程序依赖。通常这是在与平行指定罐子
上的应用程序的依赖。
<dependency>
<groupId>com.example</groupId>
<artifactId>example-app</artifactId>
<version>${project.version}</version>
<type>jar</type>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.example</groupId>
<artifactId>example-app</artifactId>
<version>${project.version}</version>
<type>apk</type>
<scope>provided</scope>
</dependency>
您可以通过运行调用插件MVN勺子:运行
。执行结果将被放置在靶/匙输出/
文件夹。如果要指定一个测试类运行,加-Dspoon.test.class = fully.qualified.ClassName
。如果您只想运行该类一个测试,加-Dspoon.test.method = testAllTheThings
。
对于一个工作示例看到示例应用程序和仪器测试勺子采样/
文件夹中。
Android的仪表亚军支持使用测试分片numShards
和shardIndex
参数(文档)。
您可以使用--e
用勺子选项通过对仪器亚军,例如通过这些参数
java -jar spoon-runner-1.3.1-jar-with-dependencies.jar \
--apk ExampleApp-debug.apk \
--test-apk ExampleApp-debug-androidTest-unaligned.apk \
--e numShards=4 \
--e shardIndex=0
如果你使用詹金斯,建立分片的好办法是一个“多配置项目”里。
添加“用户定义轴”。选择的碎片索引变量的名称,定义要(在零开始)的索引值。
在你的“执行shell”的步骤,使用相同的执行命令同上,但你使用上面定义的变量,例如注入每一个从节点碎片指数--e shardIndex = $ {} shard_index
。确保你在碎片的正确总数传球太多,比如--e numShards = 4
。
有许多方式来运行一个特定的测试,或一组测试。你可以用勺子--size
,--class名
或--method名
选项,也可以使用--e
选项参数传递到仪表亚军,如
--e包= com.mypackage.unit_tests
热门源码