骆驼蓝图测试和黄瓜
Camel blueprint testing and cucumber
是否可以将 Cucumber 与 CamelBlueprintTestSupport 结合使用?我有我的 运行ner class:
@RunWith(Cucumber.class)
@CucumberOptions(monochrome=true,
format={ "pretty", "html:target/cucumber"},
features = "C:/Users/Developer/workspace_camel/SRV002_PatronInformation/src/test/resources/cucumber/asynchronousErrorHandling.feature")
public class RunFeature_SRV002_PatronInformationTest {
}
我的蓝图测试 class 场景:
public class SRV002_PatronInformationScenarioTest extends CamelBlueprintTestSupport {
@Override
protected String getBlueprintDescriptor() {
return "/OSGI-INF/blueprint/blueprint.xml";
}
@Given("^client communicates asynchronous via socket$")
public void client_communicates_asynchronous_via_socket() throws Throwable {
System.out.println("test");
}
@When("^client posts message$")
public void an_error_occurs_inside_the_integration() throws Throwable {
String endpoint = "netty4:tcp://localhost:5000?sync=false&textline=true";
template.sendBody(endpoint, "test");
}
@Then("^the integration should not return response to the client$")
public void the_integration_should_not_return_the_error_to_the_client() throws Throwable {
System.out.println("test");
}
}
现在的问题是,当我 运行 this 我 运行 在 template.sendbody 进入 nullpointerexception 因为上下文、包和路由还没有启动。出于某种原因,似乎添加 @RunWith(Cucumber) 会阻止骆驼路线开始。
有人知道怎么解决吗?谢谢
来源
好的,所以我设法解决了这个问题。
参考看这里:
http://camel.465427.n5.nabble.com/How-to-test-routes-when-using-another-TestRunner-td5772687.html
感谢 Gregor Lenz 的帮助。
这里的关键是,在您的 Camel BlueprintTestSupport class 中,在测试方法中,启动给定场景您需要添加 this.setUp()。请看下面的代码:
在黄瓜中
SRVXXX_FileTransferCamelRunner filetransfer = new SRVXXX_FileTransferCamelRunner();
@Given("^an input file$")
public void an_input_file() throws Throwable {
endpoint.append("file:C:/Camel/input?fileName=input.txt");
}
@When("^client puts the file in the input directory$")
public void client_puts_the_file_in_the_input_directory() throws Throwable {
filetransfer.testPutFile(fileData.toString(), endpoint.toString());
}
@Then("^the integration should move the file to the output directory$")
public void the_integration_should_move_the_file_to_the_output_directory() throws Throwable {
String outputPath = "C:/Camel/output/input.txt";
filetransfer.testFileHasMoved(outputPath);
}
骆驼
@Test
public void testPutFile(String body, String endpoint) throws Exception {
this.setUp();
template.sendBody(endpoint,body);
Thread.sleep(2000);
assertFileNotExists(endpoint);
}
是否可以将 Cucumber 与 CamelBlueprintTestSupport 结合使用?我有我的 运行ner class:
@RunWith(Cucumber.class)
@CucumberOptions(monochrome=true,
format={ "pretty", "html:target/cucumber"},
features = "C:/Users/Developer/workspace_camel/SRV002_PatronInformation/src/test/resources/cucumber/asynchronousErrorHandling.feature")
public class RunFeature_SRV002_PatronInformationTest {
}
我的蓝图测试 class 场景:
public class SRV002_PatronInformationScenarioTest extends CamelBlueprintTestSupport {
@Override
protected String getBlueprintDescriptor() {
return "/OSGI-INF/blueprint/blueprint.xml";
}
@Given("^client communicates asynchronous via socket$")
public void client_communicates_asynchronous_via_socket() throws Throwable {
System.out.println("test");
}
@When("^client posts message$")
public void an_error_occurs_inside_the_integration() throws Throwable {
String endpoint = "netty4:tcp://localhost:5000?sync=false&textline=true";
template.sendBody(endpoint, "test");
}
@Then("^the integration should not return response to the client$")
public void the_integration_should_not_return_the_error_to_the_client() throws Throwable {
System.out.println("test");
}
}
现在的问题是,当我 运行 this 我 运行 在 template.sendbody 进入 nullpointerexception 因为上下文、包和路由还没有启动。出于某种原因,似乎添加 @RunWith(Cucumber) 会阻止骆驼路线开始。
有人知道怎么解决吗?谢谢 来源
好的,所以我设法解决了这个问题。 参考看这里: http://camel.465427.n5.nabble.com/How-to-test-routes-when-using-another-TestRunner-td5772687.html
感谢 Gregor Lenz 的帮助。
这里的关键是,在您的 Camel BlueprintTestSupport class 中,在测试方法中,启动给定场景您需要添加 this.setUp()。请看下面的代码:
在黄瓜中
SRVXXX_FileTransferCamelRunner filetransfer = new SRVXXX_FileTransferCamelRunner();
@Given("^an input file$")
public void an_input_file() throws Throwable {
endpoint.append("file:C:/Camel/input?fileName=input.txt");
}
@When("^client puts the file in the input directory$")
public void client_puts_the_file_in_the_input_directory() throws Throwable {
filetransfer.testPutFile(fileData.toString(), endpoint.toString());
}
@Then("^the integration should move the file to the output directory$")
public void the_integration_should_move_the_file_to_the_output_directory() throws Throwable {
String outputPath = "C:/Camel/output/input.txt";
filetransfer.testFileHasMoved(outputPath);
}
骆驼
@Test
public void testPutFile(String body, String endpoint) throws Exception {
this.setUp();
template.sendBody(endpoint,body);
Thread.sleep(2000);
assertFileNotExists(endpoint);
}