2015-11-06 86 views
1

是否可以将黄瓜与CamelBlueprintTestSupport结合?我有我的亚军类:骆驼蓝图测试和黄瓜

@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 { 

    } 

我与场景蓝图测试类:

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"); 
     } 

    } 

现在的问题是,当我运行这个我在template.sendbody因为上下文中运行到NullPointerException异常,捆绑和路线尚未开始。出于某种原因,似乎添加@RunWith(黄瓜)阻止骆驼路线开始。

任何人都知道如何解决这个问题?谢谢 文章

回答

0

好吧,所以我设法解决这个问题。 仅供参考: http://camel.465427.n5.nabble.com/How-to-test-routes-when-using-another-TestRunner-td5772687.html

感谢Gregor Lenz的帮助。

本质上,关键在于在您的Camel BlueprintTestSupport类中,在测试方法内启动给定场景,您需要添加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); 
    }