【问题标题】:java.lang.NullPointerException Error in Robolectric testsRobolectric 测试中的 java.lang.NullPointerException 错误
【发布时间】:2013-12-19 09:46:45
【问题描述】:

我正在尝试测试一种在 android 上保存到内部存储器的方法,但是当我使用 Maven 打包应用程序时,我对它的所有测试都显示为“测试错误”,当我检查单个测试结果时说班上有一个java.lang.NullPointerException,根据我的阅读,这可能与我传入的context有关,但我尝试了几种不同的方法来生成上下文,但到目前为止没有任何效果,任何有关如何使这些工作的建议将不胜感激。测试代码:

@RunWith(RobolectricTestRunner.class)
public class SaveSystemTest {

SaveSystem testSS;
Route testRoute;
@Before
public void setup()
{
    testRoute = new Route(new LatLng(54.6279022,-5.9146021), new LatLng(54.6279022,-5.9146021),"testRoute");
    testSS = new SaveSystem("testSave",Robolectric.application.getApplicationContext());
}

@org.junit.Test
public void saveTest()
{
    boolean b = testSS.save(testRoute);
    assertTrue(b);
}

saveSystem.save 的代码(最初没有 try catch,但我添加了尝试让它工作):

public boolean save(Route file)
{
    routeList.add(file);
    try
    {
        if(saveToMemory())
            return true;
        else
            return false;
    }catch (Exception e)
    {
        Log.d("SaveSystem", "Exception: " + e);
        return false;
    }
}

saveSystem.saveToMemory 的代码:

private boolean saveToMemory()
{
    try
    {
        FileOutputStream fos = context.getApplicationContext().openFileOutput(saveFileName,Context.MODE_PRIVATE);
        ObjectOutputStream os = new ObjectOutputStream(fos);
        os.writeObject(routeList);
        os.close();
        return true;
    }catch (Exception e)
    {
        Log.d("SaveSystem", "Exception: " + e);
        return false;
    }
}

【问题讨论】:

  • 您应该包括异常堆栈跟踪并指定引发异常的代码行。
  • 我对 android 开发比较陌生,如何使用 maven 获取异常堆栈跟踪?
  • 这取决于您的具体情况。如果您使用的是 surefire 插件,请查看 target/surefire-reports 目录以获取有关测试执行的详细报告。
  • here's 堆栈跟踪

标签: java android unit-testing maven robolectric


【解决方案1】:

如果您在您的类中使用通过依赖注入包含的成员,您应该提供一种方法来为此上下文传递一个模拟对象,因为它们只在您的应用程序的运行时而不是在您的测试中注入。

要了解一个好的模拟库,请查看Mockito

【讨论】:

    【解决方案2】:

    愚蠢的错误,原来我没有正确初始化“routeList”列表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-08
      • 1970-01-01
      • 2013-08-04
      • 2016-03-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多