Это может быть не лучшее решение, так как оно может сильно раздуть ваш проект. Однако, за исключением написания кода для загрузки изображения в ваши тестовые примеры, я не уверен, какой другой подход может быть.
Просто у меня есть «тестовые» чертежи в моих ресурсах, и я загружаю их как растровые изображения, а затем храним их где-то на диске, чтобы в конце концов ссылаться на них в моих тестах. Это код, который я использую:
public File saveResourceImageToExternalStorage(Activity activity, String picFileName, int imageId)
{
Bitmap bitmap = BitmapFactory.decodeResource(activity.getResources(), imageId);
File picFile = null;
OutputStream os = null;
try
{
picFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), picFileName);
picFile.createNewFile();
os = new FileOutputStream(picFile);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, os);
}
catch (IOException e)
{
e.printStackTrace();
}
return file;
}
Возможно, вы захотите сделать этот способ более надежным.
Наконец, вы можете просто спрятать свои тестовые изображения в своей папке с ресурсами для своего проекта. Тогда вы можете получить их из папки вашего активов с использованием getAssets()
в деятельности или используя путь, который должен быть чем-то вроде file:///android_asset/your_file_name.jpg
EDIT
Я думаю, что лучшее решение, после некоторых исследований, можно было бы добавить ваш файлы к активам вашего тестового проекта и используйте InputStream input = this.getContext().getAssets().open("file.jpg");
. Вы должны вызвать это из класса, который наследуется от InstrumentationTestCase
или, я полагаю, ActivityInstrumentationTestCase2
. Затем вы можете манипулировать входным потоком, как вам нужно
Это определенно не идеально. В идеале я хотел бы иметь изображения в тестовом проекте, но, увы, кажется, что это то, что я должен делать. –
После небольшого исследования кажется, что было бы намного проще добавить ваши файлы в активы вашего тестового проекта и использовать InputStream input = this.getContext(). GetAssets(). Open ("file.jpg") ;. Вы должны вызвать это из класса, который наследуется от InstrumentationTestCase или, я полагаю, ActivityInstrumentationTestCase2. Затем вы можете манипулировать входным потоком, как вам нужно. – maraci
Спасибо. Это тот тип ответа, который я искал. Не могли бы вы дать ответ или обновить свой ответ, чтобы я мог его пометить. –