mocking and isolation in Unit tests ▸ Untested configuration ▸ Untested dependency injection ▸ Untested messaging interfaces ▸ We need to test ▸ Non-functional requirements (Logging, Monitoring, Configuration, …) ▸ Security (Authorization, Authentication, Certificates) ▸ Reliability (Failover, High Availability)
https://github.com/christophd/citrus-demo-javaland MAIL SERVER WILDFLY CONTAINER EMPLOYEE REGISTRY ARQUILLIAN TEST RESOURCES SERVICES CONFIGURATION REST API MAIL SMS GATEWAY SOAP
console send Sends a message receive Receives a message sleep Wait some time sql Execute SQL statements parallel Execute actions in parallel conditional Execute actions based on iterate Execute actions in iteration repeat-on-error Failsafe action execution …
<contentType>text/plain; charset=us-ascii</contentType> <content> We welcome you '${employee.name}' to our company - now get to work! </content> </body> </mail-message> WELCOME MAIL CONTENT WELCOME-MAIL.XML WELCOME-MAIL-RESPONSE.XML <mail-response xmlns="http://www.citrusframework.org/schema/mail/message"> <code>250</code> <message>OK</message> </mail-response>
citrus-jms JMS queue or topic destination citrus-ws SOAP client and server citrus-mail SMTP mail client and server citrus-docker Docker container management citrus-camel Apache Camel endpoint citrus-ftp FTP client and server citrus-vertx Vert.x endpoint citrus-ssh SSH client and server …
▸ Simulate messaging interfaces on client and server ▸ Citrus Arquillian extension ▸ @CitrusResource, @CitrusEndpoint, @CitrusFramework ▸ Runs via command line or Java IDE