【发布时间】:2016-04-05 11:51:11
【问题描述】:
我有一个带有 2 个 Spring Boot 应用程序的多模块 Maven 项目
父母
- fooApp
- barApp
- 测试
如何设置测试,您可以在同一进程中加载单独的 Spring Boot 应用程序,每个应用程序都有自己的配置上下文。
public abstract class AbstractIntegrationTest {//test module
protected FOO foo;
protected BAR bar;
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@IntegrationTest
@Transactional
@SpringApplicationConfiguration(classes = foo.Application.class)
public class FOO {
public MockMvc mockMvc;
@Autowired
public WebApplicationContext wac;
@Before
public void _0_setup() {
MockitoAnnotations.initMocks(this);
mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();
TestCase.assertNotNull(mockMvc);
}
public void login(String username) {
}
}
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@IntegrationTest
@Transactional
@SpringApplicationConfiguration(classes = bar.Application.class)
public class BAR {
@Autowired
public WebApplicationContext wac;
public MockMvc restMvc;
@Before
public void _0_setup() {
MockitoAnnotations.initMocks(this);
restMvc = MockMvcBuilders.webAppContextSetup(wac).build();
TestCase.assertNotNull(restMvc);
}
public void login(String username) {
}
}
@Before
public void _0_setup() {
foo = new FOO();
bar = new BAR();
}
}
还有一个集成测试的例子
public class IntegrationTest extends AbstractIntegrationTest {
@Test
public void login() {
foo.login("foologin");
bar.login("barlogin");
}
}
【问题讨论】:
-
从 Spring Boot Test 1.5.0 开始,您可以 supposedly 使用
@ContextConfiguration和@SpringBootTest...您尝试过使用子上下文吗? -
你找到这个问题的答案了吗?我也有同样的情况。我的应用程序分为三个模块,它们有自己的应用程序上下文,我将公共 bean 导出到父上下文,这就是兄弟上下文可以共享 bean 的方式。问题是如何测试。我开始了解 ContextHierarchy 注释,但它会创建父子层次结构,并且无法创建兄弟上下文
标签: java spring-boot integration-testing springjunit4classrunner