Fixed
Status Update
Comments
nk...@google.com <nk...@google.com> #2
The link in the above description doesn't work external to google, expanded link: https://issuetracker.google.com/issues/73450636
No update yet.
Description
Version used: 0.5
* What steps will reproduce the problem?
1.Specify `size` argument for AndroidJUnitRunner by writing meta-data tag on AndroidManifest.xml of android test app (app/src/androidTest/AndroidManifest.xml file).
<instrumentation
android:name="android.support.test.runner.AndroidJUnitRunner"
android:targetPackage="...">
<meta-data android:name="size"
android:value="small"/>
</instrumentation>
2. Write test methods with @SmallSize annotation and @LargeTest annotation.
@RunWith(AndroidJUnit4.class)
public class TestActivityTest {
@Test
@LargeTest
public void largeTest() {
Assert.assertTrue(true);
}
@Test
@SmallTest
public void smallTest() {
Assert.assertTrue(true);
}
}
3. Run instrumented tests by `./gradlew connectedAndroidTest` command
* How are you running your tests (via Android Studio, Gradle, adb, etc.)?
Gradle (see above)
* What is the expected output? What do you see instead?
Expected : Run only method with @SmallTest annotation
(Javadoc says “All arguments can also be specified in the in the AndroidManifest via a meta-data tag”;
Actual : Run both methods with @SmallTest annotation and @LargeTest annotation
* Reason of this bug
1. AndroidJUnitRunner parses the manifest-provided args and then parses command line args ( See:
2. In RunnerArgs.Builder#fromBundle method, some arguments (for example test size, annotation, debug, etc.) are overridden with `null` EVEN IF they are not specified. ( See:
* How to fix
I think RunnerArgs.Builder#fromBundle method should read value only when the argument is specified.
- Before : this.testSize = bundle.getString(ARGUMENT_TEST_SIZE);
- After : if (bundle.containsKey(ARGUMENT_TEST_SIZE)) this.testSize = bundle.getString(ARGUMENT_TEST_SIZE);
Thanks.