情况:
Spring Cloud
Spring Boot
Swagger
这是代码:
@WebAppConfiguration @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = {Application.class, Swagger2MarkupTest.class}, loader = SpringApplicationContextLoader.class) @ActiveProfiles("test") public class Swagger2MarkupTest { @Autowired private WebApplicationContext context; private MockMvc mockMvc; @Autowired protected Environment env; @Before public void setUp() { this.mockMvc = MockMvcBuilders.webAppContextSetup(this.context).build(); } @Test public void convertSwaggerToAsciiDoc() throws Exception { this.mockMvc.perform(get("/v2/api-docs").accept(MediaType.APPLICATION_JSON)) .andDo(Swagger2MarkupResultHandler.outputDirectory("target/docs/asciidoc/generated") .withExamples("target/docs/asciidoc/generated/exampless").build()) .andExpect(status().isOk()); } }
如何在不加载数据库配置的情况下运行测试?这可能吗?
有一个选项可以伪造仅具有纯Spring功能的Spring bean。您需要使用@Primary,@Profile并@ActiveProfiles为它的注解。
@Primary
@Profile
@ActiveProfiles
我写了一篇有关该主题的博客文章。
您可以使用内存DB(例如H2)替换实际数据源。像这样:
@Configuration public class TestingDataSourceConfig { @Bean @Primary public DataSource dataSource() { return new EmbeddedDatabaseBuilder() .generateUniqueName(true) .setType(H2) .setScriptEncoding("UTF-8") .ignoreFailedDrops(true) .addScript("schema.sql") .addScripts("user_data.sql", "country_data.sql") .build(); } }