Java中cumber测试步骤的执行时间
如果我有这样的场景:Java中cumber测试步骤的执行时间,java,web-services,testing,soap,cucumber,Java,Web Services,Testing,Soap,Cucumber,如果我有这样的场景: Scenario: Correct response should be returned. When User sent "xml example" request Then Response should have some data " 对于ma TestStep类中的第一步: @When("^User sent \"(.*)\" request") public void sendRequest(String requestName) th
Scenario: Correct response should be returned.
When User sent "xml example" request
Then Response should have some data "
对于ma TestStep类中的第一步:
@When("^User sent \"(.*)\" request")
public void sendRequest(String requestName) throws Exception
{
//code for SOAP request
}
如果服务不可用,测试将运行数小时。我想在一段时间后停止。有什么建议吗 如果您的lib在提供的超时之后没有终止请求,您可以使用
ExecutorService
的替代方法。其主要思想是将带有请求的任务提交给SOAP服务,然后调用ExecutorService
,然后调用get(time,TimeUnit.SECONDS)
,从未来开始超时
例如:
Future<String> future = executor.submit(new SoapRequeset());
future.get(5L, TimeUnit.SECOND); //will throw exception if result not available after timeout
Future-Future=executor.submit(新的SoapRequeset());
future.get(5L,时间单位秒)//如果超时后结果不可用,将引发异常
可以使用带有ExecutorService
的解决方案,但我的项目不接受该解决方案。我必须从我的库中重写方法。这就是我所做的:
@Override
public SOAPMessage sendSOAPMessage(SOAPMessage request) throws Exception
{
SOAPConnection soapConnection = SOAPConnectionFactory.newInstance().createConnection();
URL endpoint =
new URL(new URL(serviceUrl), "endpoint spec.",
new URLStreamHandler()
{
@Override
protected URLConnection openConnection(URL url) throws IOException
{
URL target = new URL(url.toString());
URLConnection connection = target.openConnection();
// Connection settings
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);
return (connection);
}
});
return soapConnection.call(request, endpoint);
}
因此,当我调用
sendSOAPMessage
时,如果在这段时间内没有响应,我的测试步骤将在5秒后中断。此服务是由您控制还是由其外部服务控制?您使用哪个库发送请求?您好。服务不是由我控制的。我有我的项目测试框架,SOAP请求的方法在接口中,所以我看不到它们。接口在libs中。无论如何,用于请求的lib应该具有可以传递连接超时参数的配置。主要思想是扩展cucumber模式,您可以在其中传递第二个参数(超时)并将其用于请求。这些接口来自哪个库?我了解所有这些,我的库来自我的项目,来自我的生产力团队,所以一些类和方法的实现对我来说是隐藏的,它们应该(而且它们确实有)有超时,但出于某种原因,超时不起作用。我来这里是为了找到替代方案。