黄瓜(Java)通过Windows命令行通过批处理,但不是pom

我正在运行Windows命令行中的Cucumber for Java书中的示例。 我可以从Windowsbatch file执行它,但是当试图从Maven做到这一点,我得到“没有来源编译”和“没有testing运行”。 在POM中需要什么来指向与批次中相同的类/function?

全输出:

[C:\data_jeffy\code\java\cucumber\learning_cucumber\first_taste\checkout]mvn clean test [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building Checkout Groceries Example 1.0 [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ checkout-groceries-example --- [INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ checkout-groceries-example -- - [WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, ie build is platf orm dependent! [INFO] skip non existing resourceDirectory C:\data_jeffy\code\java\cucumber\learning_cucumber\first _taste\checkout\src\main\resources [INFO] [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ checkout-groceries-example --- [INFO] No sources to compile [INFO] [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ checkout-groceries-ex ample --- [WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, ie build is platf orm dependent! [INFO] skip non existing resourceDirectory C:\data_jeffy\code\java\cucumber\learning_cucumber\first _taste\checkout\src\test\resources [INFO] [INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ checkout-groceries-example --- [INFO] No sources to compile [INFO] [INFO] --- maven-surefire-plugin:2.12.2:test (default-test) @ checkout-groceries-example --- [INFO] No tests to run. [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 0.727 s [INFO] Finished at: 2015-05-10T13:45:48-04:00 [INFO] Final Memory: 8M/155M [INFO] ------------------------------------------------------------------------ 

checkout/pom.xml

 <!-- ! Excerpted from "The Cucumber for Java Book", ! published by The Pragmatic Bookshelf. ! Copyrights apply to this code. It may not be used to create training material, ! courses, books, articles, and the like. Contact us if you are in doubt. ! We make no guarantees that this code is fit for any purpose. ! Visit http://www.pragmaticprogrammer.com/titles/srjcuc for more book information. --> <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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>uk.co.claysnow</groupId> <version>1.0</version> <packaging>jar</packaging> <name>Checkout Groceries Example</name> <artifactId>checkout-groceries-example</artifactId> <properties> <cucumber.version>1.2.0</cucumber.version> <junit.version>4.11</junit.version> </properties> <dependencies> <dependency> <groupId>info.cukes</groupId> <artifactId>cucumber-java</artifactId> <version>${cucumber.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>info.cukes</groupId> <artifactId>cucumber-junit</artifactId> <version>${cucumber.version}</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.12.2</version> <configuration> <argLine>-Duser.language=en</argLine> <argLine>-Xmx1024m</argLine> <argLine>-XX:MaxPermSize=256m</argLine> <argLine>-Dfile.encoding=UTF-8</argLine> <useFile>false</useFile> </configuration> </plugin> </plugins> </build> </project> 

checkout/features/checkout.feature

 Feature: Checkout Scenario: Checkout a banana Given the price of a "banana" is 40c When I checkout 1 "banana" Then the total price should be 40c Scenario Outline: Checkout bananas Given the price of a "banana" is 40c When I checkout <count> "banana" Then the total price should be <total>c Examples: | count | total | | 1 | 40 | | 2 | 80 | Scenario: Two bananas scanned separately Given the price of a "banana" is 40c When I checkout 1 "banana" And I checkout 1 "banana" Then the total price should be 80c Scenario: A banana and an apple Given the price of a "banana" is 40c When I checkout 1 "banana" And I checkout 1 "apple" Then the total price should be 65c 

checkout/checkout.bat

 @( set JAR_DIR=C:\data_jeffy\code\java\cucumber\learning_cucumber\first_taste\checkout\jars\ set CLASSPATH=%JAR_DIR%gherkin-2.12.2.jar;%JAR_DIR%cucumber-jvm-deps-1.0.3.jar;%JAR_DIR%cucumber-java-1.2.2.jar;%JAR_DIR%cucumber-core-1.2.2.jar;%JAR_DIR%junit-4.11.jar;. ) javac -cp %CLASSPATH% step_definitions/CheckoutSteps.java implementation/Checkout.java @( REM java -cp %CLASSPATH% cucumber.api.cli.Main --help ) java -cp %CLASSPATH% cucumber.api.cli.Main -p progress --snippets camelcase -g step_definitions features 

在Maven中使用cucumber-jvm时,项目需要遵守Maven约定,以便cucumber-jvm可以获取不同的文件。 如果使用maven-surefire-plugin

  • 功能文件需要存储在src/test/resources ;
  • 步骤定义需要存储在src/test/java ;
  • @RunWith(Cucumber.class)注释来注释的单元测试需要存储在src/test/java

然后可以运行mvn test来执行mvn test 。 你可以看看我把这个例子放在github上。