【发布时间】:2016-01-29 13:30:15
【问题描述】:
我以前使用过这种技术并明确指定所有配置。日志表明它正在创建数据源并加载脚本:
o.s.j.d.e.EmbeddedDatabaseFactory - Starting embedded database: url='jdbc:h2:mem:balancer;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=false', username='sa'
o.s.j.d.i.ScriptUtils - Executing SQL script from class path resource [db/migration/V1_0001__create_queue_server_table.sql]
o.s.j.d.i.ScriptUtils - Executed SQL script from class path resource [db/migration/V1_0001__create_queue_server_table.sql] in 20 ms.
o.s.j.d.i.ScriptUtils - Executing SQL script from class path resource [db/migration/V1_0002__queue_server_entries.sql]
o.s.j.d.i.ScriptUtils - Executed SQL script from class path resource [db/migration/V1_0002__queue_server_entries.sql] in 8 ms.
o.s.o.j.LocalContainerEntityManagerFactoryBean - Building JPA container EntityManagerFactory for persistence unit 'default'
我能够调用 REST web 服务,并且调用通过存储库但没有返回任何内容。该应用程序在连接到 mysql 并返回加载的数据时工作正常。我看不到 WRT 配置缺少什么:
测试用例:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = {QueueServiceApplication.class, TestConfig.class})
@WebAppConfiguration
@ActiveProfiles({"test"})
public class QueueServiceApplicationTests {
private static final int EXPECTED_SERVER_COUNT = 10;
@Autowired
private WebApplicationContext webCtx;
private MockMvc mvc;
@Before
public void init() {
mvc = MockMvcBuilders.webAppContextSetup(webCtx).build();
}
@Test
public void successListAll() throws Exception {
mvc.perform(get("/listall")).andExpect(status().isOk())
.andExpect(content().contentType(MediaType.APPLICATION_JSON))
.andExpect(jsonPath("$", hasSize(EXPECTED_SERVER_COUNT)));
}
}
嵌入式数据源的测试配置对象:
@Configuration
@Profile("test")
public class TestConfig {
@Bean
public DataSource dataSource() {
return new EmbeddedDatabaseBuilder()
.addScript("classpath:/db/migration/V1_0001__create_queue_server_table.sql")
.addScript("classpath:/db/migration/V1_0002__queue_server_entries.sql")
.setType(EmbeddedDatabaseType.H2)
.setName("vitel-balancer")
.setScriptEncoding("UTF8")
.build();
}
}
启动器:
@SpringBootApplication
public class QueueServiceApplication {
public static void main(String[] args) {
SpringApplication.run(QueueServiceApplication.class, args);
}
}
我使用的是 spring-boot 1.3.2,java 8 update 72
【问题讨论】:
标签: unit-testing spring-boot datasource