首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >柑桔rest客户端-服务器测试与mvn清洁验证失败

柑桔rest客户端-服务器测试与mvn清洁验证失败
EN

Stack Overflow用户
提问于 2017-10-23 07:14:11
回答 1查看 452关注 0票数 0

输入图像描述hereI创建了以下柑橘测试用例来测试Rest客户端和服务器之间的基本连接

代码语言:javascript
复制
    @Test
    @CitrusTest
    fun httpActionTest() {

        variable("username", "user")
        variable("password","password")
        http().client("httpClient")
                .send()
                .post("/api/authenticate")
                .messageType(MessageType.JSON)
                .contentType("application/json")
                .payload("{ \"username\": \"\${username}\", \"password\": \"\${password}\"}");

        http().client("httpClient")
                .receive()
                .response(HttpStatus.OK)
                .validate("$.token","asasasasas")
    }

    @CitrusTest
    fun httpServerActionTest() {
        http().server("httpServer")
                .receive()
                .post("/api/authenticate")
                .payload("{ \"username\": \"\${username}\", \"password\": \"\${password}\"}")
                .contentType("application/json")
                .accept("application/json")
                .extractFromPayload("username", "username")
                .extractFromPayload("password", "password")
                .validate("$.username", "user")
                .validate("$.password","pass")
    http().server("httpServer")
            .send()
            .response(HttpStatus.OK)
            .payload("{\"token\": \"lsdkfjkh8sdfg98zsd\"}")
            .version("HTTP/1.1")
            .contentType("application/json")
}

我在citrux-context.xml中定义了服务器和客户端端点如下:

代码语言:javascript
复制
<citrus-http:client id="httpClient"
                    request-url="http://localhost:8080"
                    request-method="GET"
                    content-type="application/json"
                    charset="UTF-8"
                    timeout="60000"/>
<citrus-http:server id="httpServer"
                    port="8080"
                    auto-start="true"
                    resource-base="src/test/resources"/>

在通过IntelliJ执行时,会观察到以下日志:

代码语言:javascript
复制
    INFO: Loading XML bean definitions from URL [file:/home/jass/intersales/jk-magento/magento2-auth-service/target/test-classes/citrus-context.xml]
    [main] INFO org.eclipse.jetty.util.log - Logging initialized @9851ms to org.eclipse.jetty.util.log.Slf4jLog
    [main] INFO org.eclipse.jetty.server.Server - jetty-9.4.6.v20170531
    [main] INFO org.eclipse.jetty.server.handler.ContextHandler.ROOT - Initializing Spring FrameworkServlet 'httpServer-servlet'
    Oct 23, 2017 8:49:45 AM com.consol.citrus.http.servlet.CitrusDispatcherServlet initServletBean
    INFO: FrameworkServlet 'httpServer-servlet': initialization started
    Oct 23, 2017 8:49:45 AM org.springframework.web.context.support.XmlWebApplicationContext prepareRefresh
    INFO: Refreshing WebApplicationContext for namespace 'httpServer-servlet-servlet': startup date [Mon Oct 23 08:49:45 CEST 2017]; root of context hierarchy
    Oct 23, 2017 8:49:45 AM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
    INFO: Loading XML bean definitions from class path resource [com/consol/citrus/http/citrus-servlet-context.xml]
    Oct 23, 2017 8:49:46 AM org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping register
    ...
INFO: Looking for @ControllerAdvice: WebApplicationContext for namespace 'httpServer-servlet-servlet': startup date [Mon Oct 23 08:49:45 CEST 2017]; root of context hierarchy
    Oct 23, 2017 8:49:47 AM com.consol.citrus.http.servlet.CitrusDispatcherServlet initServletBean
    INFO: FrameworkServlet 'httpServer-servlet': initialization completed in 1570 ms
    [main] INFO org.eclipse.jetty.server.handler.ContextHandler - Started o.e.j.s.ServletContextHandler@1bb1fde8{/,file:///home/jass/intersales/jk-magento/magento2-auth-service/src/test/resources/,AVAILABLE}
    [main] INFO org.eclipse.jetty.server.AbstractConnector - Started ServerConnector@1286528d{HTTP/1.1,[http/1.1]}{0.0.0.0:8080}
    [main] INFO org.eclipse.jetty.server.Server - Started @12166ms
    [main] INFO com.consol.citrus.http.server.HttpServer - Started server: httpServer
    [main] INFO com.consol.citrus.Citrus - 
    [main] INFO com.consol.citrus.Citrus - ------------------------------------------------------------------------
    [main] INFO com.consol.citrus.Citrus -        .__  __                       
    [main] INFO com.consol.citrus.Citrus -   ____ |__|/  |________ __ __  ______
    [main] INFO com.consol.citrus.Citrus - _/ ___\|  \   __\_  __ \  |  \/  ___/
    [main] INFO com.consol.citrus.Citrus - \  \___|  ||  |  |  | \/  |  /\___ \ 
    [main] INFO com.consol.citrus.Citrus -  \___  >__||__|  |__|  |____//____  >
    [main] INFO com.consol.citrus.Citrus -      \/                           \/
    [main] INFO com.consol.citrus.Citrus - 
    [main] INFO com.consol.citrus.Citrus - C I T R U S  T E S T S  2.7.2
    [main] INFO com.consol.citrus.Citrus - 
    [main] INFO com.consol.citrus.Citrus - ------------------------------------------------------------------------
    [main] INFO com.consol.citrus.Citrus - 
    [main] INFO com.consol.citrus.Citrus - 

    [main] INFO com.consol.citrus.Citrus - BEFORE TEST SUITE: SUCCESS
    [main] INFO com.consol.citrus.Citrus - ------------------------------------------------------------------------
    [main] INFO com.consol.citrus.Citrus - 
    [main] INFO com.consol.citrus.actions.EchoAction - Today is: 23.10.2017
    [main] INFO com.consol.citrus.Citrus - 
    [main] INFO com.consol.citrus.Citrus - TEST SUCCESS VerticleCitrusTest.echoToday (de.intersales.qbus2)
    [main] INFO com.consol.citrus.Citrus - ------------------------------------------------------------------------
    [main] INFO com.consol.citrus.Citrus - 
    [qtp191568263-12] INFO com.consol.citrus.channel.ChannelSyncProducer - Message was sent to channel: 'httpServer.inbound'
    [qtp191568263-12] WARN com.consol.citrus.channel.ChannelEndpointAdapter - Reply timed out after 1000ms. Did not receive reply message on reply channel
    [main] INFO com.consol.citrus.http.client.HttpClient - HTTP message was sent to endpoint: 'http://localhost:8080/magento2/authenticate'

    [main] INFO com.consol.citrus.validation.xml.DomXmlMessageValidator - XML message validation successful: All values OK
    [main] INFO com.consol.citrus.validation.DefaultMessageHeaderValidator - Message header validation successful: All values OK

    [main] INFO com.consol.citrus.Citrus - 
    [main] INFO com.consol.citrus.Citrus - TEST SUCCESS VerticleCitrusTest.httpActionTest (de.intersales.qbus2)
    [main] INFO com.consol.citrus.Citrus - ------------------------------------------------------------------------
    [main] INFO com.consol.citrus.Citrus - 

    [main] INFO com.consol.citrus.Citrus - 
    [main] INFO com.consol.citrus.Citrus - ------------------------------------------------------------------------
    [main] INFO com.consol.citrus.Citrus - 
    [main] INFO com.consol.citrus.Citrus - 
    [main] INFO com.consol.citrus.Citrus - AFTER TEST SUITE: SUCCESS
    [main] INFO com.consol.citrus.Citrus - ------------------------------------------------------------------------
    [main] INFO com.consol.citrus.Citrus - 
    [main] INFO com.consol.citrus.Citrus - ------------------------------------------------------------------------
    [main] INFO com.consol.citrus.Citrus - 
    [main] INFO com.consol.citrus.Citrus - CITRUS TEST RESULTS
    [main] INFO com.consol.citrus.Citrus - 
    [main] INFO com.consol.citrus.Citrus -  VerticleCitrusTest.echoToday ................................... SUCCESS
    [main] INFO com.consol.citrus.Citrus -  VerticleCitrusTest.httpActionTest .............................. SUCCESS
    [main] INFO com.consol.citrus.Citrus - 
    [main] INFO com.consol.citrus.Citrus - TOTAL:   2
    [main] INFO com.consol.citrus.Citrus - FAILED:  0 (0.0%)
    [main] INFO com.consol.citrus.Citrus - SUCCESS: 2 (100.0%)
    [main] INFO com.consol.citrus.Citrus - 
    [main] INFO com.consol.citrus.Citrus - ------------------------------------------------------------------------
    [main] INFO com.consol.citrus.report.HtmlReporter - Generated HTML test report

但是,在通过mvn执行时获得一个错误--干净--使用以下错误验证

代码语言:javascript
复制
    [main] ERROR com.consol.citrus.Citrus - TEST FAILED VerticleCitrusTest.httpActionTest <de.intersales.qbus2> Nested exception is: 
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'httpClient' available
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:687)
       ...

`

如有任何建议或帮助,敬请见谅。

编辑了以下是我的项目资源结构布局:https://i.stack.imgur.com/aVabX.png

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-23 11:17:58

我在您的代码和设置中看到了多个问题。首先,httpServerActionTest()缺少@Test注释。如果不放在类级别上,则需要在测试类中的每个方法上重复此注释。

其次,完整的测试结构对我来说没有多大意义。在httpActionTest()测试中,您向服务器发送客户端请求,而在httpServerActionTest()中则接收与服务器完全相同的请求,并使用Citrus验证其内容。您的测试同时是客户机和服务器。我觉得不对!特别是,这个测试设置永远无法工作,因为Http本质上是一个同步协议,如果不执行httpActionTest()httpServerActionTest()就无法成功。然后,您将在客户端获得超时异常。这只有在两个方法并行执行时才能工作。

关于Maven失败:citrux-context.xml拼写错误(citrux vs. s)。而且,在我看来,该文件没有作为资源正确地添加到Maven项目中。您是否保留了默认的Maven目录布局?

再一次,完整的测试设置并没有向我说明它的目的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46883741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档