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模式,您可以在其中传递第二个参数(超时)并将其用于请求。这些接口来自哪个库?我了解所有这些,我的库来自我的项目,来自我的生产力团队,所以一些类和方法的实现对我来说是隐藏的,它们应该(而且它们确实有)有超时,但出于某种原因,超时不起作用。我来这里是为了找到替代方案。