В моем приложении (проект студии на основе градиента), мне нужно создать файл с другим именем при работе в тесте. Например, в производстве я хотел бы использовать имя com.myapp.file и при запуске под тестированием com.myapp.file. .Как узнать, работает ли приложение Android под управлением InstrumentationTestRunner?
То, что я хотел сделать, это сделать:
String packageName = getApplicationContext().getPackageName(); MyFile file = new MyFile(packageName);
Я надеялся, что PACKAGENAME будет автоматически отличаться при работе в тесте (./gradlew connectedInstrumentTest) по сравнению с нормально. Я проверил свой манифест, и он показывает, что мой тестовый манифест имеет имя пакета, заканчивающееся .test, но, похоже, оно не передается этому приложению при запуске.
Есть ли способ либо:
1) Обновить мои Gradle или файлы проекта использовать другое имя пакета при выполнении тестов
-или-
2) Есть ли способ программно сказать, чем работает мое приложение?
Итак, в тестовом бегуне вы можете запускать методы настройки и удаления. Почему бы не установить имя файла в этих методах и, где бы вы ни использовали имя файла, принять его как параметр вместо того, чтобы вывести его из имени пакета? –
Да, это работает. Это решение, которое я сейчас использую. Я разместил этот вопрос, пытаясь найти альтернативу. Причина, по которой я хочу альтернативу, это то, что мне пришлось изменить публичный конструктор моего класса, чтобы принять имя файла, которое я бы предпочел не делать. Я хотел бы скрыть эту деталь реализации, если это имеет смысл. –
Я могу это понять. К сожалению, я не думаю, что есть способ сказать, что вы используете тест, но я не на 100%, потому что это вопрос, который я не стану отвечать. Тем не менее, я бы подумал о том, чтобы создать имя файла, которое вы захватите из файла общих предпочтений, и укажите имя в файле в тестовой настройке. Вместо того, чтобы принимать его в качестве параметра, вытащите имя из предпочтения. Просто убедитесь, что имя изменилось в режиме срыва –