2015-11-06 128 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); 
    }