我正在为一个android服务实现编写JUnit测试代码,并且我必须使用一些复制到sdcard上的文件来初始化测试。我的类签名是这样的:
public class ImageServiceTest extends ServiceTestCase<ImageService> 我尝试使用this提示从assets复制文件,但getAssets()方法需要扩展Activity类。
public void copyAssets() {
AssetManager assetManager = getAssets();
...
}所以..。如何将资产中的文件复制到SD卡,以便在android中setUp junit测试?
在进阶时谢谢。
Ps:
'getSystemContext().getAssets();','getContext().getAssets();','getApplicationContext();‘返回服务项目上下文,而不是测试项目上下文。
现在我正在尝试使用Instrumentation,但是它需要一个Activity,而我正在使用一个Service项目。我正在寻找如何在没有活动的情况下使用Instrumentation ...
发布于 2011-07-08 05:14:49
好的,这很简单。
我的主要问题是从测试项目获取上下文以访问他们的assets文件夹。但是getContext()返回主项目上下文。因此,为了获得测试项目上下文,我创建了一个传递测试包的新上下文:
Context mTestAppContext = getContext().createPackageContext("com.project.myapp",
Context.CONTEXT_IGNORE_SECURITY);:-)
发布于 2011-07-05 06:35:46
您可以这样做:
protected void setUp() throws Exception {
super.setUp();
AssetManager assets = getSystemContext().getAssets();
InputStream input = assets.open("file.txt");
assertNotNull(input);
}但要考虑到,在这种情况下,资产应该在Service主项目中。
发布于 2012-08-25 04:34:05
在AndroidTestCase中还有一个隐藏的方法,它提供了所需的内容。它可以是exposed with introspection。
private Context getTestContext() throws Exception
{
return (Context)getClass().getMethod("getTestContext").invoke(this);
}https://stackoverflow.com/questions/6576230
复制相似问题