cucumber junit runner java.lang.NoSuchMethodError:
Solution 1
Updating your junit version and maybe also your surefire plugin will fix this problem.
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
For surefire:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.16</version>
</plugin>
</plugins>
</build>
Solution 2
I had the same issue and got fixed once I configured the latest version. The issue was on junit version 4.10. the latest version from 4.11 works good
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
Solution 3
Different story but same issue... developing a Jenkins plugin, using gradle, had the latest junit:junit:4.12
library on my classpath...
The issue was being caused by the junit:junit-dep:4.10
library, "aka"...
<dependency>
<groupId>junit</groupId>
<artifactId>junit-dep</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
After explicitly removing it from my configuration classpath, I no longer have the issue.
Solution 4
<dependencies>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-java</artifactId>
<version>1.2.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-junit</artifactId>
<version>1.2.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.github.mkolisnyk</groupId>
<artifactId>cucumber-reports</artifactId>
<version>0.0.11</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<encoding>UTF-8</encoding>
<source>1.6</source>
<target>1.6</target>
<compilerArgument>-Werror</compilerArgument>
</configuration>
</plugin>
</plugins>
</build>
Onizuka
Updated on January 06, 2021Comments
-
Onizuka over 3 years
Trying to implement cucumber to do some automated tests. jUnit tests. I've created 2 files and edited pom.xml that comes with maven project to add dependencies. Content is shown below. The first of two files are cucumber .feature files, which is a gherkin of plain language. The other is CukesRunner.java
When I run my tests using
Project -> Run as ... -> Maven test
it works as expected.However when I ran the CukesRunner.java file using Eclipse the Eclipse JUnit GUI, I get an error:
java.lang.NoSuchMethodError: org.junit.runner.Description.createSuiteDescription(Ljava/lang/String;Ljava/io/Serializable;[Ljava/lang/annotation/Annotation;)Lorg/junit/runner/Description; at cucumber.runtime.junit.FeatureRunner.getDescription(FeatureRunner.java:43) at cucumber.api.junit.Cucumber.describeChild(Cucumber.java:77) at cucumber.api.junit.Cucumber.describeChild(Cucumber.java:41) at org.junit.runners.ParentRunner.getDescription(ParentRunner.java:226) ...
pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.bdd</groupId> <artifactId>airportparking</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>airportparking</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>info.cukes</groupId> <artifactId>cucumber-java</artifactId> <version>1.1.5</version> <scope>test</scope> </dependency> <dependency> <groupId>info.cukes</groupId> <artifactId>cucumber-junit</artifactId> <version>1.1.5</version> <scope>test</scope> </dependency> <dependency> <groupId>com.rubiconproject.oss</groupId> <artifactId>jchronic</artifactId> <version>0.2.6</version> <scope>test</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.8.2</version> <scope>test</scope> </dependency> </dependencies> </project>
CukesRunner.java:package com.bdd.airportparking; import cucumber.api.junit.*; import org.junit.runner.RunWith; @RunWith(Cucumber.class) @Cucumber.Options( format={"pretty", "html:target/cucumber"}, features="src/test/resources" ) public class CukesRunner { }
ValetParking.feature:Feature: Valet Parking As a traveler In order to determine where to park my car I want to know the cost of valet parking Scenario: Calculate valet parking cost for half an hour When I park my car in the Valet Parking Lot for 30 minutes Then I will have to pay $12
Output when runningCukesRunner.java
as aJunit Test
:java.lang.NoSuchMethodError: org.junit.runner.Description.createSuiteDescription(Ljava/lang/String;Ljava/io/Serializable;[Ljava/lang/annotation/Annotation;)Lorg/junit/runner/Description; at cucumber.runtime.junit.FeatureRunner.getDescription(FeatureRunner.java:43) at cucumber.api.junit.Cucumber.describeChild(Cucumber.java:77) at cucumber.api.junit.Cucumber.describeChild(Cucumber.java:41) at org.junit.runners.ParentRunner.getDescription(ParentRunner.java:226) at org.junit.runner.Runner.testCount(Runner.java:38) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.countTestCases(JUnit4TestClassReference.java:30) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.countTests(RemoteTestRunner.java:487) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:455) 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)
How I structured my project in eclipse: http://postimg.org/image/vf6tlw7el/full/