Найдено решение.
я сделал тест-бегун наследует от InstrumentationTestRunner и взял дополнительные данные в OnCreate():
public class MyTestRunner extends InstrumentationTestRunner {
public static String BAR;
public void onCreate(Bundle arguments) {
if (null != arguments) {
BAR = (String) arguments.get("foo"));
}
super.onCreate(arguments);
}
}
Я добавил к Android.mk:
LOCAL_JAVA_LIBRARIES := android.test.runner
И AndroidManifest.xml:
<instrumentation
android:name="com.example.MyTestRunner"
android:targetPackage="com.example" />
Ран его с помощью этой командной строки:
adb shell am instrument -w -e foo the_value_of_bar com.example/com.example.MyTestRunner
Это бег как шарм. Мне удалось получить параметр «foo» из командной строки и использовать BAR в AndroidTestCase.
Как вы справляетесь значения с пробелами? – htellez
@htellez Это не имеет ничего общего с Android или adb. Каждая оболочка имеет свои способы обработки значений с пробелами. Если вы используете Bash, просто обведите значение с помощью одной кавычки. Например. ''значение с пробелами''. – selalerer
Я обрабатывал их так же, как «double \ quotes \ and \ slashes» (или «double \ quotes \ and \ slashes») , и он отлично работает, но кажется, что он переполнен кавычками и экранирует пробелы. Удаление кавычек или удаление экранирования приведет к катастрофе. Мне было интересно, есть ли более чистый подход. – htellez