Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ActivityInstrumentationTestCase2和android库项目:无法加载资源_Android_Unit Testing_Android Activity_Project - Fatal编程技术网

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
首先:所有基本依赖项都设置正确,因为我可以在emulator中完美地启动我的应用程序,它显示PreviewActivity刚刚好,一切正常-这里没有问题

但我没能启动测试。。。以下是设置:

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);