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-annotation-config Use Java annotation configuration
sample-reporting Add custom test reporting
sample-javaconfig Uses pure Java POJOs for configuration

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

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

Endpoints Description Sources
sample-http Shows REST API calls as a client
sample-sftp SFTP client and server interaction in Citrus
sample-soap-attachment How to send SOAP attachments to server
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-scp SCP client and server interaction in Citrus
sample-https Shows how to use SSL connectivity as a client and server
sample-soap-mtom Handle MTOM enabled SOAP attachments
sample-jdbc Validates stored data in relational database
sample-jms Shows JMS message broker connectivity
sample-mail Shows mail server activities in Citrus
sample-swagger Auto generate tests from Open API
sample-wsdl Auto generate tests from WSDL
sample-kafka Shows Kafka integration
sample-soap Shows SOAP 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-soap-wssecurity Configure SOAP web service client and server with WSSecurity
sample-soap-ssl Shows SOAP secure web service support

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

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

Validation Description Sources
sample-xml Shows XML validation feature with schema and Xpath validation
sample-hamcrest Use Hamcrest matchers
sample-json Shows Json payload validation feature with JsonPath validation
sample-oxm Shows XML object marshalling feature when sending and receiving messages
sample-xhtml Shows XHTML validation feature
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.