У меня есть несколько классов маршрутов, определенных в моем проекте в com.comp.myapp.routes. Для проверки их я проверяю конечный маршрут и проверяю / сравниваю полученную доставку.
Скажем, например, у меня есть следующие маршруты:
public class MyRoute1 extends RouteBuilder {
public void configure() throws Exception {
//Route_1 code
}
}
public class MyRoute2 extends RouteBuilder {
public void configure() throws Exception {
//Route_2 code
}
}
....
...//some route impl
..
public class MyRouteN extends RouteBuilder {
public void configure() throws Exception {
//Route_N code
}
}
Теперь для всех этих маршрутов тестовый пример, который я написал кажется таким же. Сначала смейся.
Макет для MyRoute1 :
public class MyRoute1_Mock extends RouteBuilder {
public void configure() throws Exception {
from("direct:sampleInput")
.log("Received Message is ${body} and Headers are ${headers}")
.to("mock:output");
}
}
Тест для MyRoute1:
public class MyRoute1_Test extends CamelTestSupport {
@Override
public RoutesBuilder createRouteBuilder() throws Exception {
return new MyRoute1_Mock();
}
@Test
public void sampleMockTest() throws InterruptedException {
String expected="Hello";
/**
* Producer Template.
*/
MockEndpoint mock = getMockEndpoint("mock:output");
mock.expectedBodiesReceived(expected);
String input="Hello";
template.sendBody("direct:sampleInput",input );
assertMockEndpointsSatisfied();
}
}
Сейчас сделать модульный тест для других классов, просто скопируйте и вставьте приведенный выше код с другим именем, скажем, MyRoute2_Test, MyRoute3_Test, ... MyRouteN_Test.
Так что же он на самом деле тестировал? Это просто написано с целью написания тестового примера. Это на самом деле просто проверяет / проверяет, работает ли фиктивная библиотека и библиотека верблюжьих тестов. Не работает наш код или нет? Как это на самом деле должно быть сделано?