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

Samples Description Sources
sample-binary Shows binary message content handling in Citrus
sample-mail Shows mail server activities in Citrus
sample-jms Shows JMS queue connectivity
sample-camel-context Interact with Apache Camel context and routes
sample-gradle Uses Gradle build to execute tests
sample-javaconfig Uses pure Java POJOs for configuration
sample-selenium Use Selenium for UI testing
sample-javaee Use Citrus and Arquillian in combination
sample-kubernetes Run tests in Kubernetes
sample-dynamic-endpoints Shows dynamic endpoint component usage
sample-rmi Shows Remote Method Invocation support
sample-docker Shows how to use Citrus within Docker
sample-reporting Add custom test reporting
sample-message-store Use the local message store
sample-annotation-config Use Java annotation configuration
sample-behavior Add custom test behavior
sample-hamcrest Use Hamcrest matchers
sample-dictionaries Add data dictionaries

Samples  Cucumber Description Sources
sample-cucumber-spring Shows BDD integration with Cucumber using Spring Framework injection
sample-cucumber Shows BDD integration with Cucumber

Samples  Db Description Sources
sample-sql Execute SQL statements in Citrus
sample-jdbc Validates stored data in relational database

Samples  Ftp Description Sources
sample-ftp FTP client and server interaction in Citrus
sample-scp SCP client and server interaction in Citrus
sample-sftp SFTP client and server interaction in Citrus

Samples  Http Description Sources
sample-http-form-data Exchange form data via Http GET/POST
sample-http Shows REST API calls as a client
sample-http-basic-auth Basic authentication on client and server components
sample-http-loadtest Calls REST API on Http server with multiple threads for load testing
sample-swagger Auto generate tests from Swagger Open API
sample-https Shows how to use SSL connectivity as a client and server

Samples  Json Description Sources
sample-databind Shows JSON object mapping feature when sending and receiving messages
sample-json Shows Json payload validation feature with JsonPath validation

Samples  Junit Description Sources
sample-junit5 Use JUnit5 test framework
sample-junit Use JUnit test framework

Samples  Soap Description Sources
sample-soap-wsaddressing Configure SOAP web service client and server with WSSecurity
sample-soap Shows SOAP web service support
sample-soap-mtom Handle MTOM enabled SOAP attachments
sample-soap-attachment How to send SOAP attachments to server
sample-soap-wssecurity Configure SOAP web service client and server with WSSecurity
sample-http-static-response Shows how to setup a static response generating Http server component
sample-soap-static-response Shows how to setup a static response generating SOAP web service server component
sample-soap-ssl Shows SOAP secure web service support
sample-wsdl Auto generate tests from WSDL

Samples  Testng Description Sources
sample-dataprovider Shows TestNG data provider usage in Citrus
sample-testng Use TestNG test framework

Samples  Xml Description Sources
sample-xml Shows XML validation feature with schema and Xpath validation
sample-xhtml Shows XHTML validation feature
sample-oxm Shows XML object marshalling feature when sending and receiving messages

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.