android - 关于 Robolectric。当我在 Activity 中有未初始化的对象时,如何测试该 Activity ?

标签 android robolectric android-testing

当我这样写时 MyActivity activity = Robolectric.setupActivity(MyActivity.class);

它总是这样抛出:

java.lang.NullPointerException
    at com.printer.ui.activity.MyActivity.initView(MyActivity.java:309)
    at com.ui.activity.MyActivity.onCreate(MyActivity.java:114)

那一行是这样的:

fileTextView.setText(AppUtil.getFileNameNoEx(AppConfig.printFile.getName()));

AppConfig.printFile 为空,我该如何测试该 Activity ?

最佳答案

如此快速地修复你的测试:

AppConfig.printFile = new File();
MyActivity activity = Robolectric.setupActivity(MyActivity.class);

正确的解决方法是在 Activity Intent 中传递路径:

public class MyActivity {
   public static final String FILE_PATH = "FILE_PATH";

   public void onCreate(Bundle bundle) {
      super.onCreate(bundle);

      String path = getIntent().getStringExtra(FILE_PATH);
      ...
   } 
   ...
}

Intent myActivityIntent = new Intent(this, MyActivity.class);
intent.putExtra(MyActivity.FILE_PATH, "path");
startActivity(intent);

同时尽量避免静电干扰http://www.endran.nl/blog/death-to-statics/

关于android - 关于 Robolectric。当我在 Activity 中有未初始化的对象时,如何测试该 Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37675604/

相关文章:

android - 如何单元测试 FragmentDialog 和实现接口(interface)的 Activity 之间的交互

Android Espresso 不等待 UI 完成

android - 从我自己的网站而不是市场安装(和更新)android 应用程序

java - Android 本地主机上的套接字通信

unit-testing - Robolectric 4.0.1 不断在 buildActivity 上抛出 Resources$NotFoundException

android - InjectView 在单元测试中不起作用

android - 仪器测试对 MVP 的看法

android - Android 单元测试的正确方法

android - 编辑通知对象?

android - 使用额外的模块为 android 构建 opencv 3.0