【发布时间】: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