运行 使用 Cucumber 进行 JUnit 测试后出现 NoSuchMethodError
NoSuchMethodError after run JUnit test with Cucumber
我正在使用 Intellij IDEA IDE。
我在项目中写了 2 java classes 和 1 个特征黄瓜文件。特征结构是:
Feature: First test
with Cucumber
Scenario: Testing
Given file.xml from ext
When take project path
Then run test
我还为运行测试写了 1 个 jUnit java class Cucumber.class:
import cucumber.api.junit.Cucumber;
import org.junit.runner.RunWith;
import org.hamcrest.SelfDescribing;
import gherkin.util.FixJava;
import cucumber.deps.com.thoughtworks.xstream.converters.ConverterRegistry;
@RunWith(Cucumber.class)
public class RunTest {
}
这是我的测试 class 的签名,当时给出了黄瓜:
public class CallSoapSteps {
//variables for file and path to project
String fileXML = "";
String pathToProj = "";
//take any xml file for insert it into Insert() SoapUI step
@Given("^file.xml from ext$")
public String file_xml_from_ext()
{
//take file
return fileXML = "path_to_xml_file";
}
//any statement about our xml file
@When("^take project path$")
public String take_project_path()
{
//take path to project
return pathToProj = "path_to_soap_project";
}
//any properties for our steps and running SoapTest
@Then("^run test$")
public void run_test() throws Exception {
//add test project
WsdlProject project = new WsdlProject(take_project_path());
//add xml file for test into property
project.setPropertyValue("File", file_xml_from_ext());
//get TestSuite and TestCase by name
TestSuite testSuite = project.getTestSuiteByName("Test");
TestCase testCase = testSuite.getTestCaseByName("Test");
//run test
testCase.run(new PropertiesMap(), false);
}
}
但是如果我尝试 运行 jUnit 测试,我发现了这个异常:
java.lang.NoSuchMethodError: gherkin.formatter.model.Scenario.getId()Ljava/lang/String;
而且我不知道是什么原因让我看到这个异常。
我在异常之前也看到了这个:
0 Scenarios
0 Steps
0m0.000s
据我所知,Ljava/lang/String
会检查我是否将数组串成字符串。但是在这段代码中我没有数组。
更新。
所以,我找到了这个异常的原因。
需要使用 gherkin 2.12.2.
在您上面提供的异常中 java.lang.NoSuchMethodError:gherkin.formatter.model.Scenario.getId()Ljava/lang/String;
我认为您使用的是 gherkin 2.12。0.jar 在指定的 class
中没有 getId 函数
请使用 gherkin 2.12.2.jar 并将此 jar 放在您的项目构建路径中并尝试执行
我正在使用 Intellij IDEA IDE。 我在项目中写了 2 java classes 和 1 个特征黄瓜文件。特征结构是:
Feature: First test
with Cucumber
Scenario: Testing
Given file.xml from ext
When take project path
Then run test
我还为运行测试写了 1 个 jUnit java class Cucumber.class:
import cucumber.api.junit.Cucumber;
import org.junit.runner.RunWith;
import org.hamcrest.SelfDescribing;
import gherkin.util.FixJava;
import cucumber.deps.com.thoughtworks.xstream.converters.ConverterRegistry;
@RunWith(Cucumber.class)
public class RunTest {
}
这是我的测试 class 的签名,当时给出了黄瓜:
public class CallSoapSteps {
//variables for file and path to project
String fileXML = "";
String pathToProj = "";
//take any xml file for insert it into Insert() SoapUI step
@Given("^file.xml from ext$")
public String file_xml_from_ext()
{
//take file
return fileXML = "path_to_xml_file";
}
//any statement about our xml file
@When("^take project path$")
public String take_project_path()
{
//take path to project
return pathToProj = "path_to_soap_project";
}
//any properties for our steps and running SoapTest
@Then("^run test$")
public void run_test() throws Exception {
//add test project
WsdlProject project = new WsdlProject(take_project_path());
//add xml file for test into property
project.setPropertyValue("File", file_xml_from_ext());
//get TestSuite and TestCase by name
TestSuite testSuite = project.getTestSuiteByName("Test");
TestCase testCase = testSuite.getTestCaseByName("Test");
//run test
testCase.run(new PropertiesMap(), false);
}
}
但是如果我尝试 运行 jUnit 测试,我发现了这个异常:
java.lang.NoSuchMethodError: gherkin.formatter.model.Scenario.getId()Ljava/lang/String;
而且我不知道是什么原因让我看到这个异常。 我在异常之前也看到了这个:
0 Scenarios
0 Steps
0m0.000s
据我所知,Ljava/lang/String
会检查我是否将数组串成字符串。但是在这段代码中我没有数组。
更新。
所以,我找到了这个异常的原因。 需要使用 gherkin 2.12.2.
在您上面提供的异常中 java.lang.NoSuchMethodError:gherkin.formatter.model.Scenario.getId()Ljava/lang/String;
我认为您使用的是 gherkin 2.12。0.jar 在指定的 class
中没有 getId 函数请使用 gherkin 2.12.2.jar 并将此 jar 放在您的项目构建路径中并尝试执行