我试图使用黄瓜为REST和SOAP调用创建Citrus框架。在创建了所需的所有类和特性之后,我来运行runner类,而运行runnerclass时会出现错误,说明Unrecognized plugin: com.consol.citrus.cucumber.CitrusReporter完全错误将附在下面。
我的Runner类在com.consol.citrus.demo.voting.rest包中
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软件包中的步骤
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包里
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();
}
}错误信息:
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:

发布于 2020-03-29 15:04:19
您是否将CitrusObjectFactory属性添加到cucumber.properties文件中?根据文献资料
为了支持柑橘黄瓜,我们需要在cucumber.properties中指定一个特殊的对象工厂。 cucumber.api.java.ObjectFactory=cucumber.runtime.java.CitrusObjectFactory 对象工厂负责创建所有步骤定义实例。对象工厂能够在step类中注入@CitrusResource注释字段。 使用这个特殊对象工厂是强制性的,以结合柑橘和黄瓜的能力。
https://stackoverflow.com/questions/60916037
复制相似问题