2016-11-01 6 views
2

Я пытаюсь единицы тест в Android класс, который использует XmlSerializer, но по какой-то причине, Xml.newSerializer всегда возвращает нуль. Код приложения, который использует xmlSerializer, отлично работает. Кто-нибудь знает, почему он только возвращает null при модульном тестировании?Android тест Unit Xml.newSerializer() всегда возвращает нулевой

import org.junit.Test; 
import org.xmlpull.v1.XmlSerializer; 

public class TestClass 
{ 
    @Test 
    public void test() 
    { 
     XmlSerializer serializer = Xml.newSerializer(); 
     if (serializer == null) { 
      System.out.println("Is Null!"); 
     } 
    } 
} 

Тестирование, которое я использую, это Espresso и Mockito. Благодарю.

+0

Нужно больше контекста, когда он возвращает null. предоставить [mcve], который воспроизводит проблему – Nkosi

ответ

1

Существует множество классов, которые предусмотрены на платформе Android. Единичные тесты запускаются с помощью заглубленных версий этих файлов в библиотеке на вашем компьютере. Они заштрихованы тем, что их методы вернутся null.

Проблема в том, что Xml.newSerializer() - прошитая версия Xml просто вернет null из этого метода.

Возможное обходное решение - запустить этот модульный тест androidTest вместо test. Затем вам нужно будет выполнить единичный тест на устройстве, а не на вашем компьютере.

Другой вариант - установка Robolectric. Это обеспечивает рабочие альтернативы окуркам, которые позволят вам выполнять модульные тесты без использования эмулятора.

+1

Спасибо. Вот что я в итоге сделал. Я использовал Robolectric. –

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