【问题标题】:Cucumber Execution Error Java黄瓜执行错误Java
【发布时间】:2015-05-20 06:00:22
【问题描述】:

您好,我正在从事一个项目的每个人,当我运行我的代码时,我必须使用硒来实现黄瓜,然后显示错误消息 我已经安装了 JDK 7,并且我在图像中使用了 Jars

java.lang.NoSuchMethodError: cucumber.runtime.RuntimeOptions.<init>(Ljava/util/Properties;[Ljava/lang/String;)V
    at cucumber.runtime.junit.RuntimeOptionsFactory.create(RuntimeOptionsFactory.java:32)
    at cucumber.api.junit.Cucumber.<init>(Cucumber.java:56)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:31)
    at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:24)
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
    at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:29)
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
    at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:24)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.<init>(JUnit4TestReference.java:33)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.<init>(JUnit4TestClassReference.java:25)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:48)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

特点是: 功能:在谷歌计算器中检查加法 为了验证谷歌计算器是否正常工作 作为谷歌用户 我应该能够得到正确的加法结果

场景:加法 鉴于我打开谷歌 当我在搜索文本框中输入“2+2”时 然后我应该得到结果为“4”

**Cucumber Steps Class IS :** 


    import java.util.concurrent.TimeUnit;

    import org.junit.Assert;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.firefox.FirefoxDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.By;

        import cucumber.api.java.After;
        import cucumber.api.java.Before;
        import cucumber.api.java.en.Given;
        import cucumber.api.java.en.Then;
        import cucumber.api.java.en.When;

        public class googleCalcStepDefinition {


            protected WebDriver driver;

             @Before
                public void setup() {
                    driver = new FirefoxDriver();
            }

            @Given("^I open google$")
            public void I_open_google() {
                //Set implicit wait of 10 seconds and launch google
                driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
                driver.get("https://www.google.co.in");
            }

            @When("^I enter \"([^\"]*)\" in search textbox$")
            public void I_enter_in_search_textbox(String additionTerms) {
                //Write term in google textbox
                WebElement googleTextBox = driver.findElement(By.id("gbqfq"));
                googleTextBox.sendKeys(additionTerms);

                //Click on searchButton
                WebElement searchButton = driver.findElement(By.id("gbqfb"));
                searchButton.click();
            }

            @Then("^I should get result as \"([^\"]*)\"$")
            public void I_should_get_correct_result(String expectedResult) {
                //Get result from calculator
                WebElement calculatorTextBox = driver.findElement(By.id("cwos"));
                String result = calculatorTextBox.getText();

                //Verify that result of 2+2 is 4
                Assert.assertEquals(result, expectedResult);

                driver.close();
            }

             @After
                public void closeBrowser() {
                    driver.quit();
             }

        }


        **Junit Runner Class is :** 

            import org.junit.runner.RunWith;

            import cucumber.api.junit.Cucumber;

            import cucumber.api.CucumberOptions;;

            @RunWith(Cucumber.class)


 @CucumberOptions(features = {"src/"},glue = {"src/googleCalcStepDefinition.java"})
            public class googleCalcTest {
            }

【问题讨论】:

  • 看起来你的类路径中有不兼容的 jar 文件
  • 你能告诉我我必须使用哪些罐子吗?

标签: java selenium junit cucumber cucumber-junit


【解决方案1】:

仅通过安装 JDK8 64 位和 Eclipse LUNA 64 位,然后使用以下 jar 即可解决此问题

【讨论】:

    【解决方案2】:

    看起来 cucumber.runtime.RuntimeOptions 没有接受参数属性和字符串的构造函数。您使用的 Cucumber 库不支持此功能。

    尝试使用类似下面的东西。

        import org.junit.runner.RunWith;
    
        import cucumber.api.junit.Cucumber;
    
        import cucumber.api.CucumberOptions;;
    
        @RunWith(Cucumber.class)
        @CucumberOptions(
          features = "<path to feature file>",
          glue = "src/googleCalcStepDefinition.java"
        )
        public class googleCalcTest {
        }
    

    【讨论】:

    • 编辑了我的答案,缺少一个括号。你能试试吗?
    • 我添加了它们我自己仍然显示相同的错误消息
    • 顺便说一句,feautues 的值应该是 ''path to feature file" ,我看到你给出了一个 java 文件名。功能文件通常具有 .feature 的扩展名
    • 您能否与我分享任何在您的机器上运行良好的工作测试项目,以便我可以验证它不是 JAR 合规性问题?
    • 我也进行了更改并将代码重命名为 features = {"src/"}
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-11
    • 2019-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多