为了 PowerMockito,你如何混合 junit5 和 junit4?

How do you mix junit5 and junit4 for the sake of PowerMockito?

我正在使用 junit5,但我迫切需要模拟一些静态方法和构造函数等。由于 Powermockito 仅适用于 Junit4,因此我需要混合使用 junit4 和 junit5。有人可以解释如何做这样的事情吗?例如,我需要在这个测试用例框架中修改什么?

package com.mypackage;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.junit.jupiter.MockitoExtension;


@ExtendWith(MockitoExtension.class)
public class MyClass {

    @BeforeEach
    void setup() throws Exception {
        ...
    }

    @Test
    void testRequestHandling() throws Exception {
         ....
    }
}

您可以在单个项目中混合使用 JUnit 4 和 5,请参阅 https://github.com/junit-team/junit5-samples/tree/main/junit5-multiple-engines 了解如何设置。

您可以不能做的是将 JUnit 4 机制混合到 JUnit 5 (Jupiter) 测试中。这意味着您在使用 Powermock 时必须使用 JUnit 4 测试 - 因为它不适用于 Jupiter - 但可以自由地对其他所有内容使用 Jupiter 测试,包括普通 Mockito。