RabbitMQ-mock
Mock for RabbitMQ Java amqp-client.
Compatible with versions 4.0.0 to 5.9.0 of com.rabbitmq:amqp-client
Compatible with versions 3.6.3 to 4.0.0 with the
com.github.fridujo.rabbitmq.mock.compatibility
package.
Motivation
This project aims to emulate RabbitMQ behavior for test purposes, through:
com.rabbitmq.client.ConnectionFactory
withMockConnectionFactory
Example Use
Replace the use of com.rabbitmq.client.ConnectionFactory
by MockConnectionFactory
ConnectionFactory factory = new MockConnectionFactory();
try (Connection conn = factory.newConnection()) {
try (Channel channel = conn.createChannel()) {
GetResponse response = channel.basicGet(queueName, autoAck);
byte[] body = response.getBody();
long deliveryTag = response.getEnvelope().getDeliveryTag();
// Do what you need with the body
channel.basicAck(deliveryTag, false);
}
}
More details in integration-test
With Spring
Change underlying RabbitMQ ConnectionFactory by MockConnectionFactory
@Configuration
@Import(AppConfiguration.class)
class TestConfiguration {
@Bean
ConnectionFactory connectionFactory() {
return new CachingConnectionFactory(new MockConnectionFactory());
}
}
More details in integration-test
Contribute
Any contribution is greatly appreciated. Please check out the guide for more details.
Getting Started
Maven
Add the following dependency to your pom.xml
<dependency>
<groupId>com.github.fridujo</groupId>
<artifactId>rabbitmq-mock</artifactId>
<version>1.1.1</version>
<scope>test</scope>
</dependency>
Gradle
Add the following dependency to your build.gradle
repositories {
mavenCentral()
}
// ...
dependencies {
// ...
testCompile('com.github.fridujo:rabbitmq-mock:1.1.1')
// ...
}
Building from Source
You need JDK-8 to build RabbitMQ-Mock. The project can be built with Maven using the following command.
mvn clean package
Tests are split in:
- unit tests covering features and borderline cases:
mvn test
- integration tests, seatbelts for integration with Spring and Spring-Boot. These tests use the maven-invoker-plugin to launch the same project (in src/it/spring_boot) with different versions of the dependencies:
mvn integration-test
- mutation tests, to help understand what is missing in test assertions:
mvn org.pitest:pitest-maven:mutationCoverage
Installing in the Local Maven Repository
The project can be installed in a local Maven Repository for usage in other projects via the following command.
mvn clean install
Using the latest SNAPSHOT
The master of the project pushes SNAPSHOTs in Sonatype's repo.
To use the latest master build add Sonatype OSS snapshot repository, for Maven:
<repositories>
...
<repository>
<id>sonatype-oss-spanshots</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</repository>
</repositories>
For Gradle:
repositories {
// ...
maven {
url "https://oss.sonatype.org/content/repositories/snapshots"
}
}