Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Bart Louwers <bart@emeel.net>
4.5 KiB
Mapbox GL Test App
Testing
Running Espresso tests on a device
This test project comes with all the required Android Testing Support Library dependencies
in the Gradle file. Tests are under the app/src/androidTest folder.
Note that before running your tests, you might want to turn off animations on your test device. It's a known issue that leaving system animations turned on in a test device (window animation scale, transition animation scale, animator duration scale) might cause unexpected results, or may lead tests to fail.
To create a new run configuration:
- Click on Run -> Edit Configurations...
- Click on the plus sign and then on "Android Tests"
- Give a name to the configuration, e.g.
TestAppTests - Choose the
MapboxGLAndroidSDKTestAppmodule - Choose
android.support.test.runner.AndroidJUnitRunneras the instrumentation runner - Click OK to save the new configuration
You can now run this configuration from the main toolbar dropdown menu.
Running Espresso tests on Firebase within AS
Tests are under the app/src/androidTest folder.
- Sign In with your Google account.
- Or Add Account if you want to sign in with a different account.
-
Select the test configuration you want to run and click Play button.
-
Click on Cloud Testing tab. You need to create a project in Firebase and define a Matrix configuration previously (see Firebase Test Lab for Android guide). Select your template (e.g. Nexus 5 (3)).
-
Select your Cloud project (e.g. android-gl-native (android-gl-native)).
- Click on OK button to run the tests.
- When tests finish the results will appear within AS.
Running Espresso tests on AWS Device Farm
On a terminal, within mapbox-gl-native/android/java,
run the tests (cC stands for connectedCheck):
$ ./gradlew -Pmapbox.abis=all cC -p MapboxGLAndroidSDKTestApp
Then:
- Go to your AWS Console and choose Device Farm.
- Create a new project, e.g.
MapboxGLAndroidSDKTestApp - On step 1, upload the APK in
mapbox-gl-native/android/java/MapboxGLAndroidSDKTestApp/build/outputs/apk/MapboxGLAndroidSDKTestApp-debug-unaligned.apk - On step 2, choose Instrumentation, test filter is
org.maplibre.android.testapp.MainActivityTestand upload the APK inmapbox-gl-native/android/java/MapboxGLAndroidSDKTestApp/build/outputs/apk/MapboxGLAndroidSDKTestApp-debug-androidTest-unaligned.apk - On step 3, choose a device pool. E.g. Top Devices
- On step 4, customize your device state (if needed)
- Finally, confirm the configuration and run the tests.
On Step 2, you can also separate by commas different classes: org.maplibre.android.testapp.MainActivityTest,org.maplibre.android.testapp.MainActivityScreenTest
If you have no tests for your app, or want to test some random user behavior, you can just choose "Built-in: Fuzz" in step 2.
Running pure JUnit tests
These tests run on a local JVM on your development machine and they are extremely fast to run
(as compared to Espresso). These tests are located under src/test/java. To run them you switch
to the Unit Tests build variant, then right click the corresponding test class or method
and select "Run ...".
You can also have a run configuration:
- Click on Run -> Edit Configurations...
- Click on "Junit Tests"
- Give a name to the configuration, e.g.
JUnit tests - As "Test Kind", choose "All in directory"
- As folder, choose the following folder:
mapbox-gl-native/android/java/MapboxGLAndroidSDKTestApp/src/test/java - Click OK to save the new configuration
You can also run the tests from the command line with:
$ ./gradlew -Pmapbox.abis=none test -p MapboxGLAndroidSDKTestApp
Running the UI/Application Exerciser Monkey
Similar to the "Built-in: Fuzz" test mentioned above, Android provides Monkey, "a program that runs on your emulator or device and generates pseudo-random streams of user events such as clicks, touches, or gestures, as well as a number of system-level events."
To exercise Monkey on the test app, install the package on the device (e.g. via Android Studio) and then:
$ adb shell monkey -p org.maplibre.testapp -v 500




