首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CitrusFramework -不能运行黄瓜java

CitrusFramework -不能运行黄瓜java
EN

Stack Overflow用户
提问于 2020-03-29 14:56:41
回答 1查看 264关注 0票数 0

我试图使用黄瓜为REST和SOAP调用创建Citrus框架。在创建了所需的所有类和特性之后,我来运行runner类,而运行runnerclass时会出现错误,说明Unrecognized plugin: com.consol.citrus.cucumber.CitrusReporter完全错误将附在下面。

我的Runner类在com.consol.citrus.demo.voting.rest包中

代码语言:javascript
复制
package com.consol.citrus.Petstore.rest;

import org.junit.runner.RunWith;

import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;

@RunWith(Cucumber.class)
@CucumberOptions(glue = { "com.consol.citrus.Petstore.rest",
                 "com.consol.citrus.cucumber.step.runner.core",
                 "com.consol.citrus.cucumber.step.runner.http" },
plugin = { "com.consol.citrus.cucumber.CitrusReporter" })
public class PetstorerestIT {

}

我在com.consol.citrus.demo.voting.rest软件包中的步骤

代码语言:javascript
复制
package com.consol.citrus.Petstore.rest;

import org.springframework.http.HttpStatus;

import com.consol.citrus.annotations.CitrusEndpoint;
import com.consol.citrus.annotations.CitrusResource;
import com.consol.citrus.dsl.builder.HttpActionBuilder;
import com.consol.citrus.dsl.runner.TestRunner;
import com.consol.citrus.http.client.HttpClient;


import cucumber.api.java.en.And;
import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;

public class Petstoresteps {

    @CitrusEndpoint
    private HttpClient votingClient;

    @CitrusResource
    private TestRunner runner;


    @Given("^i set variables to configure$")
    public void i_set_variables_to_configure() throws Throwable {

            runner.variable("id", "citrus:randomUUID()");
            runner.variable("name", "ArunKumar");
            runner.variable("photoUrls", "photo.jpg");
            runner.variable("status", "available");

    }

    @Given("^i send the payload request$")
    public void i_send_the_payload_request() throws Throwable {
        // Write code here that turns the phrase above into concrete actions

        runner.http(action -> action.client(votingClient)
                .send()
                .post("/voting")
                .contentType("application/json")
                .payload("{\r\n" + 
                        "  \"id\": \"${id}\",\r\n" + 
                        "  \"category\": {\r\n" + 
                        "    \"id\": \"${id}\",\r\n" + 
                        "    \"name\": \"${name}\"\r\n" + 
                        "  },\r\n" + 
                        "  \"name\": \"${name}\",\r\n" + 
                        "  \"photoUrls\": [\r\n" + 
                        "    \"${photoUrls}\"\r\n" + 
                        "  ],\r\n" + 
                        "  \"tags\": [\r\n" + 
                        "    {\r\n" + 
                        "      \"id\": \"${id}\",\r\n" + 
                        "      \"name\": \"${name}\"\r\n" + 
                        "    }\r\n" + 
                        "  ],\r\n" + 
                        "  \"status\": \"${status}\"\r\n" + 
                        "}"));


    }

    @And("^i check for the content type$")
    public void i_check_for_the_content_type() throws Throwable {
        // Write code here that turns the phrase above into concrete actions
        runner.http(action -> action.client(votingClient)
                .receive()
                .response().contentType("application/json"));

    }

    @Then("^receive status (\\d+) OK$")
    public void receive_status_OK(int arg1) throws Throwable {
        // Write code here that turns the phrase above into concrete actions

        HttpActionBuilder arg = runner.http(action -> action.client(votingClient)
                .receive()
                .response(HttpStatus.OK));
        String argg = arg.toString();
        System.out.println(argg);

    }


}

我的CitrusEndpointConfig在com.consol.citrus.Petstore包里

代码语言:javascript
复制
package com.consol.citrus.Petstore;

import com.consol.citrus.dsl.endpoint.CitrusEndpoints;
import com.consol.citrus.http.client.HttpClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;


@Configuration
public class CitrusEndpointConfig {

    @Bean
    public HttpClient votingClient() {
        return CitrusEndpoints.http()
                .client()
                .requestUrl("https://petstore.swagger.io/v2")
                .build();
    }


}

错误信息:

代码语言:javascript
复制
cucumber.runtime.CucumberException: Unrecognized plugin: com.consol.citrus.cucumber.CitrusReporter
    at cucumber.runtime.RuntimeOptions$ParsedPluginData.addPluginName(RuntimeOptions.java:372)
    at cucumber.runtime.RuntimeOptions.parse(RuntimeOptions.java:125)
    at cucumber.runtime.RuntimeOptions.<init>(RuntimeOptions.java:85)
    at cucumber.runtime.RuntimeOptions.<init>(RuntimeOptions.java:78)
    at cucumber.runtime.RuntimeOptions.<init>(RuntimeOptions.java:70)
    at cucumber.runtime.RuntimeOptionsFactory.create(RuntimeOptionsFactory.java:25)

请指导我解决这个问题!我太需要它了!

Cucumber.properties:

Citrus-application.properties:

EN

回答 1

Stack Overflow用户

发布于 2020-03-29 15:04:19

您是否将CitrusObjectFactory属性添加到cucumber.properties文件中?根据文献资料

为了支持柑橘黄瓜,我们需要在cucumber.properties中指定一个特殊的对象工厂。 cucumber.api.java.ObjectFactory=cucumber.runtime.java.CitrusObjectFactory 对象工厂负责创建所有步骤定义实例。对象工厂能够在step类中注入@CitrusResource注释字段。 使用这个特殊对象工厂是强制性的,以结合柑橘和黄瓜的能力。

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

https://stackoverflow.com/questions/60916037

复制
相关文章

相似问题

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