ActivityInstrumentationTestCase2和android库项目:无法加载资源
我有以下设置:ActivityInstrumentationTestCase2和android库项目:无法加载资源,android,unit-testing,android-activity,project,Android,Unit Testing,Android Activity,Project,我有以下设置: LibProjectWithActivity-一个包含PreviewActivity的android库项目 AppProject-常用的Android项目,使用LibProjectWithActivity AppProjectTest-一个Android JUnit测试项目,它是一个ActivityInstrumentationTestCase2 首先:所有基本依赖项都设置正确,因为我可以在emulator中完美地启动我的应用程序,它显示PreviewActivity刚刚好,
- LibProjectWithActivity-一个包含PreviewActivity的android库项目
- AppProject-常用的Android项目,使用LibProjectWithActivity
- AppProjectTest-一个Android JUnit测试项目,它是一个ActivityInstrumentationTestCase2
public class PreviewActivityTest
extends ActivityInstrumentationTestCase2<PreviewActivity> {
public PreviewActivityTest() {
// note: if i put "com.the7art.libprojectwithactivity" instead it wont find it
// and will fail with "activity not found"
super("com.the7art.appproject", PreviewActivity.class);
}
public void testDummy() {
getActivity();
}
}
下面是PreviewActivity.java:36,37行:
mButtonAdd = (Button) findViewById(R.id.button_add);
mButtonAdd.setOnClickListener(this);
所以这个异常意味着R.id.button_add(在libproject中)被完美地找到了,但是这个id的视图找不到。如果我注释掉这段代码,它在试图获取另一个资源时也会崩溃
看起来测试使用了正确的R.java,但使用了错误的上下文对象。或者类似的事情
同样,应用程序代码是正常的,因为它在emulator中工作,测试设置有问题
有没有关于什么地方出了问题以及如何解决这个问题的提示 是测试只能使用活动项目作为目标,请查看测试清单文件中的项目目标。 这意味着您的测试可以使用与应用程序相同的上下文。仅访问应用程序的项目资源。但是,您不能访问库的项目资源,您可以使用库项目中的R.string.XX,因为它是第一次构建它的,并且它只是一个生成的标识符,将在应用程序的上下文中用于查找资源。因此,结果将是“已找到的资源”中出现错误或“未找到的资源”异常。 测试库项目有两种方法
mButtonAdd = (Button) findViewById(R.id.button_add);
mButtonAdd.setOnClickListener(this);