cristianccrj
cristianccrj

Reputation: 21

How to solve this error java.lang.NoSuchMethodError: io.cucumber.core.options.RuntimeOptions.isStrict()

I am using the following dependencies in my gradle.build file

ext{
    serenity_core_version = "2.5.8"
    serenity_cucumber_version = "6.11.0"
    serenity_cucumber5_version = "2.2.6"
}
dependencies {
    compile localGroovy()
    compile "net.serenity-bdd:serenity-core:$serenity_core_version"
    compile "net.serenity-bdd:serenity-junit:$serenity_core_version"
    compile "io.cucumber:cucumber-java:$serenity_cucumber_version"
    compile "io.cucumber:cucumber-junit:$serenity_cucumber_version"
    compile "net.serenity-bdd:serenity-screenplay:$serenity_core_version"
    compile "net.serenity-bdd:serenity-screenplay-webdriver:$serenity_core_version"
    compile "net.serenity-bdd:serenity-emailer:2.1.0"
    compile "net.serenity-bdd:serenity-screenplay-rest:$serenity_core_version"
    compile "net.serenity-bdd:serenity-cucumber5:$serenity_cucumber5_version"
    compile "net.serenity-bdd:serenity-junit:$serenity_core_version"
    }

my runner is configured as follows

import io.cucumber.junit.CucumberOptions;
import net.serenitybdd.cucumber.CucumberWithSerenity;
import org.junit.runner.RunWith;


@CucumberOptions(
    features = "src/test/resources/features/MiPrimerTest",
    glue = "co.com.testrest.automation.rest",
    stepNotifications = true,
    tags = "@primeraprueba")
@RunWith(CucumberWithSerenity.class)
public class PrimeraPrueba {}

enter image description here

when I execute the following exception comes up

Upvotes: 1

Views: 2559

Answers (2)

Sushi-22
Sushi-22

Reputation: 1

As I can see you have multiple Cucumber dependencies in your Gradle. (I recommend you to not repeat libraries which can help you to avoid later possible conflicts.).

And since you are working with Serenity, the only one you should have is "net.serenity-bdd:serenity-cucumber6" (so please remove all the extra dependencies) in the same version as your "net.serenity-bdd:serenity-core"

I use Serenity with Cucumber in this way and it works without problem:

ext {
serenityVer = '2.6.0'
junitVer = '4.13.2'
assertJ = '3.20.2'}

dependencies {
implementation "net.serenity-bdd:serenity-core:${serenityVer}",
        "net.serenity-bdd:serenity-screenplay:${serenityVer}",
        "net.serenity-bdd:serenity-report-resources:${serenityVer}",
        "net.serenity-bdd:serenity-screenplay-rest:${serenityVer}",
        "net.serenity-bdd:serenity-ensure:${serenityVer}",
        "net.serenity-bdd:serenity-cucumber6:${serenityVer}",
        "junit:junit:${junitVer}",
        "org.assertj:assertj-core:${assertJVer}"}

Upvotes: 0

lucas-nguyen-17
lucas-nguyen-17

Reputation: 5917

From 2.3.x, serenity core only support cucumber 6.x and you don't need to explicit the version of cucumber, so you can remove

compile "io.cucumber:cucumber-java:$serenity_cucumber_version"
compile "io.cucumber:cucumber-junit:$serenity_cucumber_version"
compile "net.serenity-bdd:serenity-cucumber5:$serenity_cucumber5_version"

but need to add serenity-cucumber6

compile "net.serenity-bdd:serenity-cucumber6:$serenity_core_version"

you can see the sample project here https://github.com/serenity-bdd/serenity-cucumber-starter/blob/master/build.gradle

Upvotes: 1

Related Questions