We try to give you example projects as a good starting point for your very own Citrus testing project.

The Citrus sample applications try to demonstrate how Citrus works in different integration test scenarios. The projects are executable with Maven and should give you a detailed picture how Citrus testing works.

Please have a look at the repository on citrus-samples. There you can find all our sample projects.

Each sample demonstrates a special aspect of how to use Citrus. Most of the samples use a simple todo-list application as system under test. Please find following list of samples and their primary objective

Configuration Description Sources
sample-javaconfig Uses pure Java POJOs for configuration
sample-annotation-config Use Java annotation configuration
sample-reporting Add custom test reporting

Connectors Description Sources
sample-docker Shows how to use Citrus within Docker
sample-kubernetes Run tests in Kubernetes

Demo Description Sources
sample-cucumber Shows BDD integration with Cucumber
sample-camel-context Interact with Apache Camel
sample-quarkus How to verify Quarkus applications with Citrus
sample-jbang Prototype Citrus tests in minutes with JBang
sample-selenium Use Selenium for UI testing

Endpoints Description Sources
sample-http Shows REST API calls as a client
sample-scp SCP client and server interaction in Citrus
sample-soap-attachment How to send SOAP attachments to server
sample-soap-mtom Handle MTOM enabled SOAP attachments
sample-http-basic-auth Basic authentication on client and server components
sample-ftp FTP client and server interaction in Citrus
sample-dynamic-endpoints Shows dynamic endpoint component usage
sample-soap Shows SOAP web service support
sample-sftp SFTP client and server interaction in Citrus
sample-https Shows how to use SSL connectivity as a client and server
sample-swagger Auto generate tests from Open API
sample-mail Shows mail server activities in Citrus
sample-jms Shows JMS message broker connectivity
sample-wsdl Auto generate tests from WSDL
sample-soap-wssecurity Configure SOAP web service client and server with WSSecurity
sample-jdbc Validates stored data in relational database
sample-soap-ssl Shows SOAP secure web service support
sample-rmi Shows Remote Method Invocation support
sample-soap-wsaddressing Configure SOAP web service client and server with WSSecurity
sample-soap-static-response Shows how to setup a static response generating SOAP web service server component
sample-http-static-response Shows how to setup a static response generating Http server component
sample-http-loadtest Calls REST API on Http server with multiple threads for load testing
sample-kafka Shows Kafka integration

Miscellaneous Description Sources
sample-gradle Uses Gradle build to execute tests
sample-behavior Add custom test behavior
sample-dictionaries Add data dictionaries
sample-message-store Use the local message store

Quarkus Description Sources
event-driven-kafka How Citrus helps to verify event driven Kafka messaging in a Quarkus application

Runtimes Description Sources
sample-junit5 Use JUnit5 test framework
sample-dataprovider Shows TestNG data provider usage in Citrus
sample-testng Use TestNG test framework
sample-junit Use JUnit test framework

Validation Description Sources
sample-xhtml Shows XHTML validation feature
sample-oxm Shows XML object marshalling feature when sending and receiving messages
sample-hamcrest Use Hamcrest matchers
sample-xml Shows XML validation feature with schema and Xpath validation
sample-json Shows Json payload validation feature with JsonPath validation
sample-databind Shows JSON object mapping feature when sending and receiving messages
sample-http-form-data Exchange form data via Http GET/POST
sample-sql Execute SQL statements in Citrus
sample-binary Shows binary message content handling in Citrus

Pick your sample application for try out and got to the respective folder. Each sample is executable on your host. You just need Maven, Java and a git client. Refer to the detailed instructions in the sample README.

Of course, we appreciate any kind of help that you can give us in order to make things easy for Citrus users. So if you have a sample worth reading for others please let us know. Also, if you are missing a sample because you do not know how to accomplish the Citrus use case please do not hesitate to contact us. You may also open a new issue in the Citrus samples repository.