使用Overcast搭建spring boot应用集成测试环境
来源:互联网 发布:方正字库mac版 编辑:程序博客网 时间:2024/06/06 07:34
Overcast简介
Overcast是一个提供java api管理虚拟机容器的开源项目,可用于集成测试中虚拟机环境搭建,可以支持以下对这些虚拟机进行启停控制:
* Amazon EC2 hosts (Automatic host creation/destroy)
* Vagrant hosts (Set up to the running state, tear down to the initial state)
* VirtualBox hosts (Load snapshot and start, power off)
* Libvirt managed KVM hosts (Fast clones using backing store, provisioning)
* Docker containers
* Tunneled cloud hosts (Reaching target host via ssh tunnel)
使用方式比较简单,maven依赖
<dependency> <groupId>com.xebialabs.cloud</groupId> <artifactId>overcast</artifactId> <version>2.5.1</version></dependency>
一个配置了虚拟机信息的overcast.conf文件
rabbitmq { dockerImage="rabbitmq:3.6.6" exposeAllPorts=true remove=true removeVolume=true}
加上了上面这个配置文件后,就可以通过下面的api进行虚拟机的启停管理
CloudHost rabbitmq = CloudHostFactory.getCloudHost("rabbitmq"); rabbitmq.setup(); rabbitmq.teardown();
Spring boot应用使用docker搭建测试环境示例
下面列举一个实现rabbitmq收发消息的spring boot应用,使用Overcast搭建测试环境的例子。
由于用到了Rabbitmq,如果要测试收发功能,必须要有Rabbitmq服务器才能测试,使用Overcast在测试时启动提供了Rabbitmq服务的docker容器,自动化搭建环境,非常方便。以下是实现
Rabbitmq发消息的实现代码
@Componentpublic class AppQueueMessageSender { @Autowired private RabbitTemplate rabbitTemplate; public void send(final String message) { rabbitTemplate.convertAndSend("app.exchange", "app.queue", message); }}
Rabbitmq收消息代码
@Componentpublic class AppQueueMessageListener { @Autowired private AppMessageRepository repository; @RabbitListener( queues = "app.queue", containerFactory = "rabbitListenerContainerFactory", admin = "amqpAdmin" ) public void onMessage(final String message) { repository.persist(message); }}
在 src/test/resources目录下放一个overcast.conf文件,内容为:
rabbitmq { dockerImage="rabbitmq:3.6.6" exposeAllPorts=true remove=true removeVolume=true}
写明了使用rabbitmq的docker镜像。然后使用代码进行配置
@Configurationpublic class OvercastConfiguration { // 通过CloudHostFactory获取rabbitmq虚拟机的管理类CloudHost,把它设置为bean,bean初始化时启动,销毁时停止 @Autowired private ConfigurableEnvironment env; @Bean(initMethod = "setup", destroyMethod = "teardown") @Qualifier("rabbitmq") public CloudHost rabbitmq() { return CloudHostFactory.getCloudHost("rabbitmq"); } // 把rabbitmq虚拟机的端口,hostName等信息设置到spring boot的rabbitmq属性中,spring boot应用中的rabbitmq收发消息将连接这个docker虚拟机容器中的rabbitmq服务 @PostConstruct public void init() throws TimeoutException { final CloudHost rabbitmq = rabbitmq(); final Map<String, Object> properties = new HashMap<>(); properties.put("spring.rabbitmq.host", rabbitmq.getHostName()); properties.put("spring.rabbitmq.port", rabbitmq.getPort(5672)); final PropertySource<?> source = new MapPropertySource("overcast", properties); env.getPropertySources().addFirst(source); }}
最后在spring boot的测试类中加载这个配置类即可
@SpringBootTest( classes = { OvercastConfiguration.class, AppConfiguration.class }, webEnvironment = WebEnvironment.NONE)
执行spring boot测试将会搭建起rabbitmq的docker服务器,并连接到这里进行rabbitmq收发消息的测试。
参考文章 https://dzone.com/articles/testing-apps-with-overcast-and-docker
- 使用Overcast搭建spring boot应用集成测试环境
- spring boot 集成测试
- spring-boot环境搭建
- Spring Boot环境搭建
- 搭建Spring Boot环境
- spring boot环境搭建
- Spring boot环境搭建
- Spring Boot环境搭建
- Spring Boot环境搭建
- 使用VS2005+TCL搭建集成测试环境测试浏览器接口
- Java----Spring boot 环境搭建
- (1)spring boot环境搭建
- Spring boot (1) 环境搭建
- Spring Boot + gradle环境搭建
- spring boot 搭建环境入门
- MAVEN集成测试环境搭建
- Spring Boot搭建Web应用
- spring-boot 集成 Swagger 搭建RESTful API
- parsley之验证属性设置
- HashMap实现原理
- OpenGL Rendering Pipeline
- GitHub中"watch" "star" "fork"
- XML学习笔记1
- 使用Overcast搭建spring boot应用集成测试环境
- 列出游戏库存的字典功能-用Python自动化无聊的东西-chapter5
- 寄生组合式继承
- JavaScript之学习this
- 对象属性管理和描述符的使用
- BeanUtils工具
- android:Layout_weight正确的理解
- LeetCode Move Zeroes
- 2.shell 程序设计(1)