我有以下设置:
首先:所有基本依赖项都设置正确,因为我可以在模拟器中完美地启动我的应用程序,它显示 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();
}
}
这会抛出一个NullPointerException,如下所示:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.the7art.appproject/com.the7art.libprojectwithactivity.PreviewActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2401)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2417)
.......
Caused by: java.lang.NullPointerException
at com.the7art.libprojectwithactivity.PreviewActivity.onCreate(PreviewActivity.java:37)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2364)
... 11 more
以下是PreviewActivity.java:36,37:
行mButtonAdd = (Button) findViewById(R.id.button_add);
mButtonAdd.setOnClickListener(this);
所以这个异常意味着完全找到了R.id.button_add(在libproject中),但找不到这个id的视图。如果我注释掉这段代码,那么在尝试获取另一个资源时它会同样崩溃。
看起来测试使用正确的R.java,但错误的Context对象。或类似的东西。
同样,应用程序代码还可以,因为它可以在模拟器中运行,测试设置有问题......
有关错误以及如何解决此问题的任何提示?
答案 0 :(得分:1)
是的,测试只能使用Activity项目作为目标,查看Test清单文件中的projectTarget。 这意味着您的测试可以使用与应用程序相同的上下文。仅访问应用程序的项目资源。但是,您无法访问Library的项目资源,您可以使用库项目中的R.string.XX,因为这是首次构建它,并且它只是一个生成的标识符,将在应用程序的上下文中用于查找资源。因此,结果将是找到的资源中的错误或资源未找到异常。 有两种方法可以测试库项目here they are