2013-12-19 2 views
-1

Я пытаюсь протестировать метод сохранения во встроенную память на Android, но все мои тесты для него появляются как «Тест по ошибке», когда я упаковываю приложение с Maven , когда я проверяю отдельные результаты теста, он говорит, что в классе было java.lang.NullPointerException. Из того, что я прочитал, это может быть связано с context, с которым я проходил, но я пробовал несколько разных методов генерации контекста и до сих пор ничего не было сделано, любые советы о том, как заставить их работать, будут очень признательны. Код для теста:java.lang.NullPointerException Ошибка в тестах Robolectric

@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; 
    } 
} 
+1

Вы должны включить трассировку стека исключений и указать строку кода, в которой генерируется исключение. –

+0

Я относительно новичок в разработке Android, как бы получить трассировку стека исключений с помощью maven? – awriis

+0

это зависит от вашей конкретной ситуации. Если вы используете плагин surefire, проверьте каталог 'target/surefire-reports' для подробных отчетов о тестовых исполнениях. –

ответ

0

Глупая ошибка, оказывается, я не правильно инициализировал список «Список маршрутов» правильно.

0

Если вы используете элементы в своем классе, которые включены с помощью Dependency Injection, вы должны предоставить способ передачи в издевалси объекта для этого контекста, так как они только вводят в ру ntime вашего приложения, а не в ваших тестах.

Для хорошей насмешливой библиотеки взгляните на Mockito.

Смежные вопросы