복붙노트

[SPRING] 낙타 석영 경로 테스트

SPRING

낙타 석영 경로 테스트

나는 아파치 낙타 루트에 대한 junit 테스트를하려고합니다. 이 같은 :

@RunWith(CamelSpringJUnit4ClassRunner.class)
@ContextConfiguration(
    loader = CamelSpringDelegatingTestContextLoader.class
)
public class MyExportRouteBuilderIT extends CamelTestSupport {
    @Test
    public void test() {
        // trigger and check the files made by route builder processor
    }

    @Override
    protected RouteBuilder createRouteBuilder() throws Exception {
        return new MyExportRouteBuilder();
    }
}

빌더 클래스는 다음과 같이 정의됩니다.

from("quartz2://exportJob?cron=" + cronTrigger)
.setHeader(FILE_NAME, expression(FILE_NAME_FORMAT))
.process(myExportRouteProcessor)
.marshal(new BindyCsvDataFormat(MyExportData.class))
.to("file:///destination);

'myExportRouteProcessor'클래스는 JPA 저장소에서 일부 데이터를 가져 와서 결과를 경로에 저장합니다. 내가 원하는 것은 테스트 과정에서이 과정을 실행하여 전체 프로세스가 제대로 끝났는지 확인하는 것입니다. 현재 프로세서가 시작되지 않았습니다. 더 무엇을해야합니까?

해결법

  1. ==============================

    1.AdviceWithRouteBuilder # replaceFromWith를 사용하여 테스트에서 quartz2 구성 요소를 직접 대체 할 수 있습니다.

    AdviceWithRouteBuilder # replaceFromWith를 사용하여 테스트에서 quartz2 구성 요소를 직접 대체 할 수 있습니다.

    @Test
    public void test() throws Exception{
       //mock input route (replace quartz with direct)
       context.getRouteDefinitions().get(0).adviceWith(context, new AdviceWithRouteBuilder() {
           @Override
           public void configure() throws Exception {
               replaceFromWith("direct:triggerQuartz");
           }
       });
    
       //trigger endpoint
       sendBody("direct:triggerQuartz", null);
    
       //do some assertions
    }    
    
  2. from https://stackoverflow.com/questions/47759037/testing-camel-quartz-route by cc-by-sa and MIT license