我正在尝试进行集成测试,其中包括 ApplicationRunner 的执行。
我使用@SpringBootTest,当上下文初始化时,ApplicationRunner会自动启动,这是可以的。
我想要实现的是在 ApplicationRunner 中注入(inject)一个模拟并在执行 ApplicationRunner 之前配置该模拟。
如果我在测试中配置mock是行不通的,因为当执行测试时,Spring上下文已经初始化并且ApplicationRunner已经执行。
有没有办法在 Spring 上下文初始化之后、ApplicationRunner 执行之前配置模拟?
最佳答案
如果您的 ApplicationRunner 类有 bean 依赖项,您可以按如下方式模拟它。
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class ApplicationRunnerTest {
@MockBean
private final Dependency dependency;
@Autowired
private final ApplicationRunner applicationRunner;
@Before
public void setUp() throws Exception {
}
@Test
public void testMethod() {
}
}
关于java - Spring 启动: Inject mock in ApplicationRunner,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61979773/