2014-02-12 58 views
6

试图实施黄瓜做一些自动化测试。 jUnit测试。我创建了2个文件,并编辑了maven项目附带的pom.xml文件来添加依赖项。内容如下所示。两个文件中的第一个是黄瓜.feature文件,它是一种浅黄色的小黄瓜。另一个是CukesRunner.java黄瓜junit转轮java.lang.NoSuchMethodError:

当我运行我的测试使用Project -> Run as ... -> Maven test它按预期工作。

然而,当我跑使用Eclipse在Eclipse的JUnit GUI的CukesRunner.java文件,我得到一个错误:

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 


输出运行CukesRunner.javaJunit 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) 


如何构建我的Eclipse项目: http://postimg.org/image/vf6tlw7el/full/

+0

你在哪里有'stepdefs'? – Bala

+0

@Bala它应该在哪里? – Onizuka

+0

检查这个答案。它可能会帮助你。 http://stackoverflow.com/questions/21753267/cucumber-jvm-undefined-step/21754450#21754450 – Bala

回答

11

更新你的junit版本,也许你的surefire插件将解决这个问题。

 <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.11</version> 
      <scope>test</scope> 
     </dependency> 

对于神火:

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.16</version> 
     </plugin> 
    </plugins> 
</build> 
1

不同的故事,但同样的问题......发展詹金斯插件,使用gradle这个,有最新的junit:junit:4.12库在我的类路径...

问题是由junit:junit-dep:4.10库引起的,“又名”...

<dependency> 
    <groupId>junit</groupId> 
    <artifactId>junit-dep</artifactId> 
    <version>4.10</version> 
    <scope>test</scope> 
</dependency> 

从我的配置类路径中明确删除它后,我不再有问题。

0

我面临同样的问题,我发现我在我的构建路径中配置了junit 4.10和4.11,坚持junit 11,解决了这个问题。

0
<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> 
+0

我已经更新了我的POM,如下所示,并得到解决。 –