We have talked and written about Relish, here Relish – Living documentation instead in this article we analyze together Spoon, a distributing instrumentation tests to all your Androids.

Android’s ever-expanding ecosystem of devices creates a unique challenge to testing applications. Spoon aims to simplify this task by distributing instrumentation test execution and displaying the results in a meaningful way.

Using the application APK and instrumentation APK, Spoon runs the tests on multiple devices simultaneously. Once all tests have completed, a static HTML summary is generated with detailed information about each device and test. With the high-level output you can immediately see whether or not a test failure is specific to a single device or all devices. This view is designed to be displayed on a dedicated monitor or TV. Spoon will run on all targets which are visible to adb devices. Plug in multiple different phones and tablets, start different configurations of emulators, or use some combination of both!

In addition to simply running instrumentation tests, Spoon has the ability to snap screenshots at key points during your tests which are then included in the output. This allows for visual inspection of test executions across different devices. Taking screenshots requires that you include the spoon-client JAR in your instrumentation app.

Spoon Site
 
Spoon Quick Start Guide

1. export PATH=/Users/pinschertesting/Library/Android/sdk/platform-tools/:/Users/pinschertesting/Library/Android/sdk/tools/:$PATH

2. java -jar spoon-runner-1.3.2-jar-with-dependencies.jar
The following options are required:
–test-apk
–apk

Usage:

[options]
Options:
–adb-timeout – Set maximum execution time per test in seconds (10min default); Default: 600
–apk – Application APK
–class-name – Test class name to run (fully-qualified)
–e – Arguments to pass to the Instrumentation Runner. This can be used
multiple times for multiple entries. Usage: –e =.
–fail-if-no-device-connected – Fail if no device is connected; Default: false
–fail-on-failure – Non-zero exit code on failure; Default: false
–init-script – Script file executed between each devices
–method-name – Test method name to run (must also use –class-name)
–no-animations – Disable animated gif generation; Default: false
–output – Output path; Default: spoon-output
–sdk – Path to Android SDK
–sequential – Execute tests sequentially (one device at a time); Default: false
–size – Only run methods with corresponding size annotation (small, medium,
large)
–test-apk – Test application APK
–title – Execution title; Default: Spoon Execution
–serial – Serial of the device to use (May be used multiple times) – Default: []

Run example:
java -jar spoon-runner-1.3.2-jar-with-dependencies.jar –apk /Users/pinschertesting/Documents/android-feature-signup/app/build/outputs/apk/app-debug.apk –test-apk /Users/pinschertesting/Documents/android-feature-signup/app/build/outputs/apk/app-debug-androidTest-unaligned.apk –sdk /Users/pinschertesting/Library/Android/sdk/