Hi guys,
Today I will post about Spoon which is a framework that I’ve been learning. I hope this helps someone too, because spoon is quite new and doesn’t have too much support if you want to run with Cucumber.
Spoon is a framework to run android reports and Cucumber is a BDD framework.
- If you are using gradle, you need to open your build.gradle and add:
classpath('com.stanfy.spoon:spoon-gradle-plugin:1.0.3') {
exclude module: 'guava'
}
- In your app-build.gradle:
plugin 'spoon' dependencies{ androidTestCompile 'com.squareup.spoon:spoon-client:1.2.0'
androidTestCompile 'info.cukes:cucumber-android:1.2.4'
androidTestCompile 'info.cukes:cucumber-picocontainer:1.2.4'
}
- Create Spoon task in the same file:
spoon {
debug = true
if (project.hasProperty('spoonFailNoConnectedDevice')) {
failIfNoDeviceConnected = true
}
if (project.hasProperty('cucumberOptions')) {
instrumentationArgs = ["cucumberOptions=" + "'${project.cucumberOptions}'"]
}
}
- The instrumentation runner:
public class Instrumentation extends CucumberInstrumentation {
@Override
public void onStart() {
runOnMainSync(new Runnable() {
@Override
public void run() {
Application app = (Application) getTargetContext().
getApplicationContext();
String simpleName = Instrumentation.class.getSimpleName();
// Unlock the device so that the tests can input keystrokes.
((KeyguardManager) app.getSystemService(KEYGUARD_SERVICE)) //
.newKeyguardLock(simpleName) //
.disableKeyguard();
// Wake up the screen.
((PowerManager) app.getSystemService(POWER_SERVICE)) //
.newWakeLock(FULL_WAKE_LOCK | ACQUIRE_CAUSES_WAKEUP
| ON_AFTER_RELEASE, simpleName) //
.acquire();
}
});
super.onStart();
}
}
- Now you can use gradle command line with spoon task and pass Cucumber arguments. Like this one:
gradle spoon -PspoonFailNoConnectedDevice -PcucumberOptions='--tags @smoke'
- Or you can use adb command line – without spoon report generation:
adb shell am instrument -w -e cucumberOptions "'--tags @smoke'" com.rsouza.test/com.rsouza.test.Instrumentation
- Instrument arguments
am instrument argument | Description |
---|---|
-e count true | Count the number of tests (scenarios) |
-e debug true | Wait for a debugger to attach before starting to execute the tests. |
-e log true | Enable Cucumber dry-run (same as –e dryRun true) |
-e coverage true | Enable EMMA code coverage |
-e coverageFile “/path/coverage.ec“ | Set the file name and path of the EMMA coverage report |
- Cucumber arguments
https://cucumber.io/docs/reference/jvm#third-party-runners
- Example: Use Cucumber and adb arguments
adb shell am instrument -w -e log true -e cucumberOptions "'--tags @debug'" com.rsouza.test/com.rsouza.test.Instrumentation
Thank you guys ! See you next week 🙂
Hi, Thank you for this article, I also updated QATestingTools.com with it, find it at http://www.qatestingtools.com/testing-tool-article/cucumber%20integrate%20with%20spoon%20for%20mobile%20testing
you can also comment and add more information for it in the future.
Hi, did you find solution for spoon/cucumber-jvm screenshot problem? I saw you open a ticket on github and then closed it. Looks like you solved it.
Hi, yes !
I will post today here on my blog the solution. It’s not the best solution, but it’s what I could do for now 😦