如何将 Mockito 与 JUnit5 一起使用
2022-08-31 06:39:37
如何将注入与 Mockito 和 JUnit 5 一起使用?
在JUnit4中,我只能使用Prosnote。在JUnit5中没有注释吗?@RunWith(MockitoJUnitRunner.class)
@RunWith
如何将注入与 Mockito 和 JUnit 5 一起使用?
在JUnit4中,我只能使用Prosnote。在JUnit5中没有注释吗?@RunWith(MockitoJUnitRunner.class)
@RunWith
有不同的方法可以使用Mockito - 我将逐一介绍它们。
使用 Mockito:::mock
手动创建模拟无论 JUnit 版本(或测试框架)如何都可以工作。
使用@Mock注释和对 MockitoAnnotations::initMocks
的相应调用来创建模拟,无论 JUnit 版本如何(或测试框架,但 Java 9 可能会在这里干扰,这取决于测试代码是否最终出现在模块中)。
JUnit 5有一个强大的扩展模型,Mockito最近在组/artifact ID org.mockito下发布了一个:mockito-junit-jupiter。
您可以通过向测试类添加并使用 对模拟字段进行注释来应用扩展。来自 的 JavaDoc:@ExtendWith(MockitoExtension.class)
@Mock
MockitoExtension
@ExtendWith(MockitoExtension.class)
public class ExampleTest {
@Mock
private List list;
@Test
public void shouldDoSomething() {
list.add(100);
}
}
MockitoExtension 文档描述了实例化模拟的其他方法,例如使用构造函数注入(如果您在测试类中 rpefer final 字段)。
JUnit 4 规则和运行器在 JUnit 5 中不起作用,因此不能使用 MockitoRule
和 Mockito 运行器。
使用Mockito的MockitoExtension
。该扩展包含在一个新的工件中:mockito-junit-jupiter
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-junit-jupiter</artifactId>
<version>4.5.1</version>
<scope>test</scope>
</dependency>
它允许您像使用JUnit 4一样编写测试:
import org.mockito.junit.jupiter.MockitoExtension;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
@ExtendWith(MockitoExtension.class)
class MyTest {
@Mock
private Foo foo;
@InjectMocks
private Bar bar; // constructor injection
...
}