当前位置: 首页 > 知识库问答 >
问题:

mockito,如何验证静态成员函数

俞衡虑
2023-03-14

拥有一个内部生成错误消息的类,并使用android的静态函数util。日志i(String,String)来记录错误(可能是其他静态函数来记录故障)。

class Util {

    public static void handleIntent(Intent intent, String Tag, String failMsg) {
        ...
            
        if (true) { // for test
            String s = failMsg; //getError(failCode);
            Log.i(Tag, s);
        }
        ...
    }
}

测试旨在验证是否记录了错误消息(使用mockito inline 3.8.0):

@Test
public void test_log() {

    try (MockedStatic<Log> logMock = Mockito.mockStatic(Log.class)) {

        Intent intent = getIntent();

        // test
        Util.handleIntent(intent, "theTag", "+++TEST1");

        // verify
        Mockito.verify(logMock, times(1)).i(eq(theTag), eq("+++TEST1")); //<== does not compile
        Log.i(eq("+++TEST1"), eq(dataStr));

    }
}

如何模仿android。util。登录并验证其静态android。util。日志已使用字符串调用i(String,String)?

(powermock不是选项。它使用的是powermock,在mockito更新到3.8.0和powermock更新到2.0.9之后,它开始出现很多错误,建议用mockito内联替换powermock。)

共有2个答案

长孙玉泽
2023-03-14

这项工作:

try (MockedStatic<Log> logMock = Mockito.mockStatic(Log.class)) {

            // test
            Util.handleIntent(intent, "theTag", "+++TEST1");
            logMock.verify(() -> Log.i(eq("theTag"), eq("+++TEST1"), times(1));

        }
东龙野
2023-03-14

您可以在测试指令之前添加“logMock.when”指令。

 类似资料:
  • 在类中,static 除了可以声明 静态成员变量,还可以声明静态成员函数。普通成员函数可以访问所有成员(包括成员变量和成员函数),静态成员函数只能访问静态成员。 编译器在编译一个普通成员函数时,会隐式地增加一个形参 this,并把当前对象的地址赋值给 this,所以普通成员函数只能在创建对象后通过对象来调用,因为它需要当前对象的地址。而静态成员函数可以通过类来直接调用,编译器不会为它增加形参 th

  • 本文向大家介绍C++中静态成员函数与静态成员变量(static ),包括了C++中静态成员函数与静态成员变量(static )的使用技巧和注意事项,需要的朋友参考一下 C++中静态成员函数与静态成员变量(static ) 这篇介绍了静态成员函数与静态成员变量,是我的读书笔记,我希望它够简短但又比较全面,起到复习的作用。如果有一些C++知识记不清楚了,它可以帮你很快回忆起来。 复习C语言的stati

  • 我正在Junit上工作 这就是我所做的。我已发出请求,并且我的请求已成功调用我的控制器。当我尝试使用要测试是否调用了静态方法,我得到一个错误,如下所示。 我得到的错误是: 我的问题是: > 我可以使用在我的方法。如果"是"如何? 我还想在上使用验证。我该怎么做呢? 任何帮助都是值得赞赏的。

  • Mockito似乎获得了越来越多的PowerMockito功能。 当我更新到 测试失败了。 所以我试图摆脱PowerMokito。 问题是没有验证静态https://www.javadoc.io/doc/org.powermock/powermock-api-mockito/latest/org/powermock/api/mockito/PowerMockito.html#verifyStati

  • 本文向大家介绍C ++中的静态成员函数,包括了C ++中的静态成员函数的使用技巧和注意事项,需要的朋友参考一下 在上一篇文章中,我们讨论了C ++中的静态数据成员,并讨论了可以通过成员函数访问静态数据成员,但是该函数应该是静态成员函数 静态成员函数是一种特殊的成员函数,仅用于访问静态数据成员,其他任何常规数据成员均无法通过静态成员函数访问。就像静态数据成员一样,静态成员函数也是类函数。它不与任何类

  • 问题内容: 我正在使用以下内容。 这是我的utils课 这是被测课程的要点: 这是测试: 以上测试失败。给出的验证模式为空,但根据代码,如果订购成功,则必须发送电子邮件。 问题答案: 如果您要嘲笑行为(类似),则实际上无需调用。也就是说,这是我重写测试方法的动力: 我分为四个部分,以更好地突出显示正在发生的事情: 1.变量 我选择在此处声明任何实例变量/方法参数/模拟协作者。如果它在多个测试中使用