I’m using ActivityInstrumentationTestCase2 to test my Android apps in combination with TouchUtils both part of the standard Android Testkit as described in Googles Android Developer documentation in section Activity Testing. My test work fine locally so I tried to run them on Cricle-CI. For using the Android Emulator on Circle-CI I created a circle.yml as described in your docs. However all my tests which utilize TouchUtils fail with a java.lang.SecurityException telling me that I don’t have the permissions to inject events in another application. I’ve seen that message before locally, since this happens when trying to simulate clicks on any activity while the testing device is locked. After some googling I found out, that it’s possible to unlock the emulator via command line with adb shell input keyevent 82 so I added this step to my circle.yml file. However this didn’t change anything and my tests still fail. Any ideas how I can unlock the Android Emulator running on Circle-CI or maybe any idea what else that exception may cause?
test:
override:
# start the emulator
- emulator -avd circleci-android22 -no-audio -no-window:
background: true
parallel: true
# wait for it to have booted
- circle-android wait-for-boot
# run tests against the emulator.
# wakeup & unlock the emulator
- sleep 3
- fb-adb shell input keyevent 82
- sleep 3
- ./gradlew connectedAndroidTest
# copy the build outputs to artifacts
- cp -r cashier/build/outputs/apk $CIRCLE_ARTIFACTS
# copy the test results to the test results directory.
- cp -r cashier/build/outputs/androidTest-results $CIRCLE_TEST_REPORTS
- cp -r cashier/build/outputs/reports $CIRCLE_TEST_REPORTS