Android 单元测试 Xml.newSerializer() 总是 return null
Android Unit test Xml.newSerializer() always return null
我正尝试在 Android 中 单元测试 class 使用 XmlSerializer
但出于某种原因,Xml.newSerializer
总是 returns 为空。不过,使用 xmlSerializer
的应用程序代码运行良好。有谁知道为什么单元测试时它只有 returns 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。谢谢。
Android平台提供了很多类。单元测试 运行 针对计算机库中的存根版本。他们存根于他们的方法将 return null
.
问题似乎出在 Xml.newSerializer()
- Xml
的存根版本将从该方法调用中 return null
。
一个可能的解决方法是 运行 这个单元测试 androidTest
而不是 test
。然后,您将必须 运行 在设备上而不是在您的计算机上进行单元测试。
另一个选项是安装 Robolectric。这为存根提供了可行的替代方案,使您可以在不使用模拟器的情况下执行单元测试。
您可以尝试使用不依赖于 Android 平台的 org.xmlpull.v1.XmlPullParserFactory
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlSerializer serializer = factory.newSerializer();
只需确保将 testImplementation 'net.sf.kxml:kxml2:2.3.0'
添加到 build.gradle
中的依赖项
我正尝试在 Android 中 单元测试 class 使用 XmlSerializer
但出于某种原因,Xml.newSerializer
总是 returns 为空。不过,使用 xmlSerializer
的应用程序代码运行良好。有谁知道为什么单元测试时它只有 returns 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。谢谢。
Android平台提供了很多类。单元测试 运行 针对计算机库中的存根版本。他们存根于他们的方法将 return null
.
问题似乎出在 Xml.newSerializer()
- Xml
的存根版本将从该方法调用中 return null
。
一个可能的解决方法是 运行 这个单元测试 androidTest
而不是 test
。然后,您将必须 运行 在设备上而不是在您的计算机上进行单元测试。
另一个选项是安装 Robolectric。这为存根提供了可行的替代方案,使您可以在不使用模拟器的情况下执行单元测试。
您可以尝试使用不依赖于 Android 平台的 org.xmlpull.v1.XmlPullParserFactory
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlSerializer serializer = factory.newSerializer();
只需确保将 testImplementation 'net.sf.kxml:kxml2:2.3.0'
添加到 build.gradle