我正在尝试 Android 单元测试使用XmlSerializer
的类但由于某种原因,Xml.newSerializer
始终返回null。使用xmlSerializer
的应用代码运行正常。有谁知道为什么它只在单元测试时返回null?
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 :(得分:1)
Android平台中提供了许多类。在计算机的库中对这些的存根版本运行单元测试。他们的方法是返回null
。
问题似乎是Xml.newSerializer()
- Xml
的存根版本只会从此方法调用中返回null
。
一种可行的解决方法是运行此单元测试androidTest
而不是test
。然后,您必须在设备上而不是在计算机上运行单元测试。
另一个选择是安装Robolectric。这提供了存根的工作替代方案,允许您在不使用仿真器的情况下执行单元测试。
答案 1 :(得分:0)
您可以尝试使用不依赖于Android平台的org.xmlpull.v1.XmlPullParserFactory
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlSerializer serializer = factory.newSerializer();
只需确保将testImplementation 'net.sf.kxml:kxml2:2.3.0'
添加到build.gradle中的依赖项