这是一个非常简单的问题,我找不到解决方案。我有一个相当复杂的Android应用程序,它使用相机并对拍摄的图像进行一些操作。我现在想为某些函数编写单元测试,但我无法加载文件。单元测试的文件位置
在Android测试项目中,我应该在哪里粘贴图像进行测试,以及如何将该图像加载到File
对象中?我有一个普通的junit.framework.TestCase
类,需要发送一个File
到类上进行测试。提前致谢!
这是一个非常简单的问题,我找不到解决方案。我有一个相当复杂的Android应用程序,它使用相机并对拍摄的图像进行一些操作。我现在想为某些函数编写单元测试,但我无法加载文件。单元测试的文件位置
在Android测试项目中,我应该在哪里粘贴图像进行测试,以及如何将该图像加载到File
对象中?我有一个普通的junit.framework.TestCase
类,需要发送一个File
到类上进行测试。提前致谢!
这可能不是最好的解决方案,因为它可能会大大增加您的项目。但是,在您的测试用例中没有编写代码来下载图像,我不确定可能有哪些其他方法。
简单地说,我在我的资源中'测试'drawables,并将它们加载为位图,然后将它们存储在光盘的某个位置以最终在我的测试中引用它们。这是我使用的代码:
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
编辑路径让他们
我认为更好的解决方案,经过一番研究,会增加你的文件到您的测试项目的资产并使用InputStream input = this.getContext().getAssets().open("file.jpg");
。您需要从继承自InstrumentationTestCase
的类或我想,ActivityInstrumentationTestCase2
中调用此函数。然后你可以操纵输入流如何你需要
这绝对不是理想的。理想情况下,我希望在测试项目中有图像,但可惜的是,这是我必须做的。 – 2014-10-10 17:58:57
经过一番研究,似乎将测试项目的资源中添加文件并使用InputStream input = this.getContext()。getAssets()。open(“file.jpg”);将会更加简单。您需要从继承自InstrumentationTestCase的类或我认为的ActivityInstrumentationTestCase2中调用此函数。然后你可以操纵输入流如何你需要。 – maraci 2014-10-14 16:29:53
谢谢。这是我正在寻找的答案类型。你能否让它成为答案/更新你的答案,以便我可以标记它。 – 2014-10-16 22:21:22