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

如何在kotlin android中使用mockito.mockstatic来模拟静态方法

印季
2023-03-14

如何在kotlin android中使用mockito.mockstatic对静态方法进行嘲讽?

这是我的代码:

    class MyUtilClassTest {
       @Test
       fun testIsEnabled() {
          Mockito.mockStatic(MyUtilClass::class.java, Mockito.CALLS_REAL_METHODS)
                .use { mocked ->
                    mocked.`when`<Boolean> { MyUtilClass.isEnabled() }.thenReturn(true)
                    assertTrue(MyUtilClass.isEnabled())
                }
       }
    }
    
    object MyUtilClass {
       fun isEnabled(): Boolean = false
    }
    null

共有1个答案

田佐
2023-03-14

从JVM的角度来看,myutilClass.isEnabled()不是静态类/函数。您可以使用show Kotlin bytecode来了解背后的内容

public final class MyUtilClass {
   public static final MyUtilClass INSTANCE;

   public final boolean isEnabled() {
      return false;
   }

   private MyUtilClass() {
   }

   static {
      MyUtilClass var0 = new MyUtilClass();
      INSTANCE = var0;
   }
}
 类似资料:
  • 当使用mock静态方法时,出现了这个异常。 unfinishedstubbingException:在这里检测到未完成的stubbing:at utils.powermocktest.test(powermocktest.java:18) null

  • 问题内容: 我有一个类,我正在为应该执行以下操作的方法编写测试: 1)它应该调用静态方法上 2)它应该从子类方法填充变量 3)它应该从传递String参数的最终帮助器类中调用静态方法 4)它应该在blockList中调用每个的run方法 到目前为止,我有这个空方法: 我正在使用JUnit,Mockito来模拟对象,并且尝试使用PowerMockito来模拟静态类和最终类(Mockito不能这样做)

  • 模拟由某个类实现的接口方法很容易,但如果有一个类并且有一个静态方法,那么我们如何借助easymock对其进行模拟呢?? supose是一个a类,有一个void retruned方法作为公共静态void methodA(一些参数…){} 我们如何在EasyMock的帮助下模仿A的方法methodA

  • 我试图用Kotlin中的jMockit模拟一个静态方法: 但我得到以下错误:

  • 我试图在静态方法中模拟静态方法。 我想知道不使用任何框架是否可能。 有没有办法达到我的目的?

  • 问题内容: 我正在尝试模拟私有静态方法。见下面的代码 这是我的测试代码 但是我运行的每个瓦片都会出现此异常 我想我在嘲弄东西时做错了什么。有什么想法我该如何解决? 问题答案: 为此,您可以使用和。 此外,您必须在测试类中指定PowerMock运行器,并准备要进行测试的类,如下所示: 希望对您有帮助。