Android 单元测试 Xml.newSerializer() 始终返回 null

标签 android unit-testing mockito android-espresso

我正在尝试在 Android 中对使用 XmlSerializer 的类进行单元测试,但由于某种原因,Xml.newSerializer code> 始终返回 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。谢谢。

最佳答案

Android平台提供了很多类。单元测试是针对计算机上的库中的 stub 版本运行的。它们被 stub ,因为它们的方法将返回 null

问题似乎是 Xml.newSerializer() - Xml 的 stub 版本将仅从此方法调用返回 null

一种可能的解决方法是运行此单元测试 androidTest 而不是在 test 中。然后,您必须在设备上而不是计算机上运行单元测试。

另一个选项是安装 Robolectric 。这提供了 stub 的工作替代方案,允许您在不使用模拟器的情况下执行单元测试。

关于Android 单元测试 Xml.newSerializer() 始终返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40363038/

相关文章:

android - 音池不工作

mockito - 部分 mock 被认为是不好的做法? (莫基托)

java - 如何为调用 API 的方法编写 JUnit 测试?

java - 使用 Mockito 将参数模拟对象转换为另一个对象

android - 如何在锁屏中设置全屏专辑封面?

android - 无法在 onActivityResult 处 getIntExtra()

android - RenderScript 应用程序中的 SIGSEGV

c# - 使用 DeploymentItem 属性的 AutoMapper 单元测试不起作用 - PlatformNotSupportedException

c# - 使用 Rhino Mocks 如何为模拟方法设置参数属性

java - 使用 JMockit,如何模拟特定输入参数值的接口(interface)方法?