我想測試一個方法來保存到android的內部存儲器,但我所有的測試都是作爲「測試錯誤」,當我用Maven打包應用程序時,當我查看單獨的測試結果時,它說班級中有一個java.lang.NullPointerException
,從我讀過的內容來看,它可能與我傳入的context
有關,但我已經嘗試了幾種不同的方法來生成上下文,目前爲止沒有任何工作,任何有關如何讓這些工作的建議將不勝感激。用於測試的代碼:Robolectric測試中的java.lang.NullPointerException錯誤
@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(沒有原來有嘗試捕捉,但我補充說,試圖得到這個工作):
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獲取異常堆棧跟蹤? – awriis
這取決於你的具體情況。如果您使用surefire插件,請查看'target/surefire-reports'目錄以獲取有關測試執行的詳細報告。 –