【问题标题】:Mockito 3.6: Using mockStatic in @Before or @BeforeClass with JUnit4Mockito 3.6:在 @Before 或 @BeforeClass 中使用 mockStatic 和 JUnit4
【发布时间】:2021-01-30 06:50:22
【问题描述】:

Mockito 3.6 支持在 try-with-resources 块下模拟静态方法,如 here 所述。

有人可以告诉我是否使用@Before@BeforeClass 中的Powermock 模拟了静态方法,是否可以使用Mockito.mockStatic 替换它们而无需完全重写测试类?

【问题讨论】:

    标签: java java-8 mockito mockstatic


    【解决方案1】:

    我认为您可能需要进行一些重构。您可以通过在类级别创建一个 MockedStatic 变量来创建静态方法的模拟,并在您的测试中使用它,有时它需要在 @After 块中关闭,例如

    MockedStatic<StaticClass> mockedStaticClass;
    @Before
    public void setUp()
    {
      mockedStaticClass = Mockito.mockStatic(StaticClass.class);
    }
    
    @After
    public void tearDown() throws Exception
    {
      mockedStaticClass.close();
    }
    
    @Test
    public void yourTest()
    {
      //make use of mockedStatic variable you created earlier
    }
    

    【讨论】:

      【解决方案2】:

      就像@John 说的,这个方法很好用。

      我的经验是,模拟 必须 在 After/AfterEach 块中关闭。否则,在调用下一个测试方法时会出现“使用中的模拟”错误。

      【讨论】:

        猜你喜欢
        • 2021-01-30
        • 2023-03-08
        • 1970-01-01
        • 1970-01-01
        • 2021-02-04
        • 2023-03-24
        • 1970-01-01
        • 2019-07-01
        • 2015-10-14
        相关资源
        最近更新 更多