Red Hat Training

A Red Hat training course is available for Red Hat Fuse

Chapter 13. Testing Support in SwitchYard

SwitchYard uses JUnit, which is a unit testing framework for Java. SwitchYard provides comprehensive unit test support for testing your applications. There are three primary elements to test support in SwitchYard:
  • SwitchYardRunner
  • SwitchYardTestKit
  • SwitchYardTestCaseConfig

13.1. SwitchYardRunner Class

The SwitchYardRunner Class is a JUnit test Runner class that takes care of bootstrapping an embedded SwitchYard runtime and deploying a SwitchYard application for the test instance.
In order to take advantage of the test support in SwitchYard, ensure that your unit test is annotated with the SwitchYardRunner JUnit test Runner class. The SwitchYardRunner creates and starts an embedded runtime for each test method. After the embedded runtime starts, the project containing the test is packaged as a SwitchYard application and deployed to it. An instance of the SwitchYardTestKit class is injected into the test when a property of type SwitchYardTestKit is declared in the test. This instance represents the runtime state of the deployed SwitchYard test application.
@RunWith(SwitchYardRunner.class)
public class MyServiceTest  {
 
    private SwitchYardTestKit testKit;
 
    @Test   
    public void testOperation() {
        MyTestServiceHandler service = new MyTestServiceHandler();
 
        // register the service...
        testKit.registerInOutService("MyService", service);
       
        // invoke the service and capture the response...
        Message response = newInvoker("MyService")
        .sendInOut("<create>A1234</create>");
 
        // test the response content by doing an XML comparison with a
        // file resource on the classpath...
        testKit.compareXMLToResource(response.getContent(String.class), "/myservice/expected-create-response.xml");
    }
 
    private class MyTestServiceHandler implements ExchangeHandler {
        // implement methods....
    }
}
The SwitchYardTestKit class provides a set of utility methods for performing all sorts of deployment configuration and test operations.