Issue
Using Run Configurations you can specify groups of tests to run, provided that they are in the same class or the same package. However, I want to specify a group of tests, where the tests are sprinkled throughout my test suite.
I was not able to find specific instructions for how to do this. I figured out a way, and thought I would share it here, in case anyone else finds it useful.
Solution
I solved the problem by creating an annotation (can be applied to a test class or to a test method), and having the test runner filter on that annotation.
Define Test Annotation
/**
* This annotation is used to mark tests for devices with a physical
* keyboard (Chromebook).
*
* The annotation can be applied to test classes, and to individual
* tests.
*/
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface PhysicalKeyboardTest {
}
Use Test Annotation
@Test
@PhysicalKeyboardTest
public void enterKey_shouldWork() {
...
}
Run Configuration - Single Device
In the Run Configuration dialog, under "Android Instrumented Tests"
- Make a copy of "All Android Tests" configuration
- Rename copy to "Physical Keyboard Tests"
- In "Instrumentation arguments"
- Name field: annotation
- Value field: com.path-to-annotation-def.PhysicalKeyboardTest
The "Physical Keyboard Tests" run configuration will run all tests annotated with "@PhysicalKeyboardTest", anywhere in the test suite.
Run Configuration - All Connected Devices
In the Run Configuration dialog, under "Gradle"
- Add a configuration:
- Name: Physical Keyboard Tests (all devices)
- Gradle project: select your app
- Tasks: connectedCheck
- Arguments: -Pandroid.testInstrumentationRunnerArguments.annotation=com.path-to-your-annotation-def.PhysicalKeyboardTest
The "Physical Keyboard Tests (all devices)" run configuration will run all tests annotated with "@PhysicalKeyboardTest", anywhere in the test suite, on all of the connected devices.
Answered By - Clo Knibbe
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.