Écrire et exécuter un test JUnit - 8.0

Exemples de Services et de routage de données

Version
8.0
Language
Français
Product
Talend Data Fabric
Talend Data Services Platform
Talend ESB
Talend MDM Platform
Talend Open Studio for ESB
Talend Real-Time Big Data Platform
Module
Studio Talend
Content
Création et développement > Création de Routes
Création et développement > Création de Services
Last publication date
2023-12-08

Procédure

  1. Cliquez-droit sur le projet Maven route-unit-test dans le Package Explorer et sélectionnez New (Nouveau) > JUnit Test Case (Scénario de test JUnit) dans le menu contextuel.
    Assistant New JUnit Test Case (Nouveau scénario de test JUnit).
  2. Le nouvel assistant [New JUnit Test Case] s'ouvre. Sélectionnez l'option New JUnit 3 test et saisissez RouteTestSample comme nom de classe de test. Cliquez sur Finish.
  3. La classe de test s'ouvre dans l'espace de modélisation graphique. Saisissez le test comme suit.
    package org.talend.test;
    
    import java.util.Map;
    
    import org.apache.camel.CamelContext;
    import org.apache.camel.EndpointInject;
    import org.apache.camel.Produce;
    import org.apache.camel.ProducerTemplate;
    import org.apache.camel.builder.RouteBuilder;
    import org.apache.camel.component.mock.MockEndpoint;
    import org.apache.camel.test.junit4.CamelTestSupport;
    import org.junit.Test;
    
    import esbdemos.simpleroute_0_1.SimpleRoute;
    
    public class RouteTestSample extends CamelTestSupport {
    	@EndpointInject(uri = "mock:result")
    	protected MockEndpoint resultEndpoint;
    	@Produce(uri = "direct:start")
    	protected ProducerTemplate template;
    	private RouteBuilder builder;
    
    	@Test
    	public void testSendMatchingMessage() throws Exception {
    		String expectedBody = "bar";
    		resultEndpoint.expectedBodiesReceived(expectedBody);
    		template.sendBody(expectedBody);
    		resultEndpoint.assertIsSatisfied();
    	}
    
    	@Test
    	public void testSendNotMatchingMessage() throws Exception {
    		resultEndpoint.expectedMessageCount(0);
    		template.sendBody("foo");
    		resultEndpoint.assertIsSatisfied();
    	}
    
    	@Override
    	protected CamelContext createCamelContext() throws Exception {
    		SimpleRoute route = new SimpleRoute();
    		// Setup the test aliases
    		Map<String, String> uriProperties = route.getUriMap();
    		uriProperties.put("start", "direct:start");
    		uriProperties.put("end", "mock:result");
    		route.loadCustomUriMap(uriProperties);
    		// Build the route
    		builder = route.Route(false);
    		return builder.getContext();
    	}
    
    	@Override
    	protected RouteBuilder createRouteBuilder() {
    		return builder;
    	}
    }

    Comme affiché ci-dessus, vous utilisez le framework Camel Test pour tester la Route, ce qui nécessite l'utilisation d'endpoints mock spéciaux pour extraire les résultats durant le test unitaire. La Route créée n'utilise pas des endpoints mock. Elle utilise les composants habituels file et log. Une solution est de remplacer les composants file et log par les composants direct:start et mock:result. De la ligne 49 à la ligne 52, vous pouvez voir Map<String,String>, qui permet de mapper le nom du composant et son URI et change les valeurs en start et end. Cela permet de falsifier les composant et de tester la Route en isolation.

  4. Cliquez sur le bouton Run Job (Exécuter le Job) dans la barre d'outils afin d'exécuter le test.
    Onglet JUnit.

    Le test est réussi.