Верблюд и огурец-джунит игнорируют @UseAdviceWith
Cucumber @RunWith(Cucumber.class) игнорирует @UseAdviceWith в моем классе шагов. В результате контекст Camel всегда запускается, и я не контролирую, когда он должен начаться.
Чтобы преодолеть это, я делаю:
@RunWith(Cucumber.class)
@CucumberOptions(
plugin = {"pretty", "html:target/cucumber"},
features = {"blabla/feature"},
glue = {"blabla.steps"})
public class TestRunner
{
@BeforeClass
public static void setUp()
{
SpringCamelContext.setNoStart(true);
}
}
@Slf4j
//@UseAdviceWith - Ignored by Cucumber
@RunWith(CamelSpringBootRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
public class BlablaSteps {
@Before()
public void beforeScenario(Scenario scenario) throws Exception
{
SpringCamelContext.setNoStart(false);
camelContext.start();
}
}
Есть ли лучший способ сделать это? Более декларативный?
Я думаю, что должен быть тест, подобный тому, который использует Cucumber и @UseAdviceWith, вручную запуская контекст верблюда: https://github.com/apache/camel/blob/master/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/mockendpoints/AdviceWithTest.java
зависимости:
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java</artifactId>
<version>2.4.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-spring</artifactId>
<version>2.4.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-junit</artifactId>
<version>2.4.0</version>
<scope>test</scope>
</dependency>
и верблюд:
<camel-version>2.22.0</camel-version>