gpt4 book ai didi

junit - @RunWith(SpringRunner.class) 与 @RunWith(MockitoJUnitRunner.class)

转载 作者:行者123 更新时间:2023-12-02 08:57:03 38 4
gpt4 key购买 nike

我使用 @RunWith(MockitoJUnitRunner.class) 与mockito 进行 junit 测试。但现在我正在使用 spring boot 应用程序并尝试使用 @RunWith(SpringRunner.class) 。使用 @RunWith(SpringRunner.class) 与使用 @RunWith(MockitoJUnitRunner.class) 相比是否有任何优势?我仍然可以使用 @Injectmock@Mock@Spy@RunWith(SpringRunner.class) 等功能吗

最佳答案

SpringRunner 支持加载 Spring ApplicationContext 并将 beans @Autowired 添加到测试实例中。 它实际上做的事情远不止这些(在 Spring 引用手册中介绍),但这就是基本思想。

然而,MockitoJUnitRunner 支持使用 Mockito 创建模拟和 spy 。

但是,使用 JUnit 4,您一次只能使用一个 Runner

因此,如果您想同时使用 Spring 和 Mockito 的支持,您只能选择其中一个运行程序。

但是你很幸运,因为 Spring 和 Mockito 除了运行者之外还提供规则

例如,您可以将 Spring 运行程序与 Mockito 规则结合使用,如下所示。

@RunWith(SpringRunner.class)
@SpringBootTest
public class MyTests {

@Rule
public MockitoRule rule = MockitoJUnit.rule();

@Mock
MyService myService;

// ...
}

不过,通常情况下,如果您使用 Spring Boot 并且需要从 Spring ApplicationContext 模拟 bean,那么您将使用 Spring Boot 的 @MockBean 支持而不是简单的 @Mock

关于junit - @RunWith(SpringRunner.class) 与 @RunWith(MockitoJUnitRunner.class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49635396/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com