当前位置:  开发笔记 > 编程语言 > 正文

java.lang.RuntimeException:存根!在Android中使用Mockito

如何解决《java.lang.RuntimeException:存根!在Android中使用Mockito》经验,为你挑选了1个好方法。

我一直在Google上查找此错误,我发现的大多数答案都是将junit依赖关系移至顶部。或使用另一个模拟框架。我已经消除了依赖关系,但仍然失败了,整个项目使用了模仿和powermock。

这是简历中的代码。

package co.pack.session;

import com.google.gson.JsonObject;
import org.junit.Test;
import co.pack.Session.Organization;
import static org.junit.Assert.assertEquals;

public class TestOrganization {

@Test
public void testLoadJson() {
    JsonObject json = new JsonObject();
    json.addProperty("theme_color", "red");
    Organization organization = new Organization();

    organization.loadFromJson(json);

    assertEquals("red", Organization.getThemeColor());
    }
}

实作

public static void loadFromJson(JsonObject json) {
    Organization.name = json.has("name") ? json.get("name").getAsString() : "";
    Organization.image = json.has("image") ? json.get("image").getAsString() : "";

    printActualOrganization();
}

private static void printActualOrganization() {
    Log.i(TAG, "_name_ " + name);
    Log.i(TAG, "_image_ " + image);
}

它在日志行上失败

Log.i(TAG, "_name_ " + name);

并得到这个

java.lang.RuntimeException: Stub!

at android.util.Log.i(Log.java:9)
at co.mobico.Session.Organization.loadJson(Organization.java:50)
at co.mobico.session.TestOrganization.testLoadJson(TestOrganization.java:28)

日志行,永远不会在测试中引起任何错误,我不知道这种情况下发生了什么。



1> Christopher..:

您可以尝试将以下选项添加到您的应用中build.gradle

android {

    testOptions {
        unitTests.returnDefaultValues = true
    }
}

这应该防止您收到此RuntimeException,因为在这种情况下,Android方法将返回默认值。请注意,这可能会引起其他问题,例如使用时TextUtils.equals(...)

基本上,我同意模拟被测单元的每个依赖关系的策略,但是您可以将返回值用作一种解决方法。

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有