Change theme
Help
Press space for more information.
Show links for this issue (Shortcut: i, l)
Copy issue ID
Previous Issue (Shortcut: k)
Next Issue (Shortcut: j)
Sign in to use full features.
Vote: I am impacted
Notification menu
Refresh (Shortcut: Shift+r)
Go home (Shortcut: u)
Pending code changes (auto-populated)
View issue level access limits(Press Alt + Right arrow for more information)
Unintended behavior
View staffing
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.