Maven 忽略 Cucumber 测试
Maven is ignoring Cucumber tests
我正在尝试 运行 Maven 的两个黄瓜功能文件,但没有任何反应。我使用的是 Gherkin 的荷兰语 (NL) 版本。当我直接在 Eclipse 中或使用 Gradle 运行ning 功能文件时,它们 运行ning 很好。我在 Whosebug 上研究了所有关于这个问题的早期问题,但仍然找不到解决方案。
这是我在 Eclipse 中的项目结构:
Eclipse project structure
使用命令 mvn Test 运行将项目与 Maven 连接的结果是:
Running nl.werkwel.cucumber.RunTest
Configuring TestNG with: org.apache.maven.surefire.testng.conf.TestNG652Configurator@f5c0729
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.341 sec
Results :
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
[INFO] BUILD SUCCESS
我还尝试 运行 使用:
"mvn test -Dcucumber.options="src/test/resources/registratiepage.特征”
但结果是一样的
这是 POM
<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>nl.werkwel</groupId>
<artifactId>cucumber</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>cucumber</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.2.4</version>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.8.8</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.53.0</version>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-junit</artifactId>
<version>1.2.4</version>
</dependency>
</dependencies>
</project>
这是功能文件之一:
# language: nl
Functionaliteit: Testen van de Registratiepagina
Achtergrond:
Gegeven Gebruiker is op de registratiepagina
Scenario: Niet succesvolle registratie, emailadres niet gevuld
Als Gebruiker geen emailadres invult
En Klikt op de button nu registreren
Dan wordt de melding "Voer een waarde in" getoond
Scenario: Link Algeregistreerd
Als Gebruiker op link algeregistreerd klikt
Dan gaat gebruiker verder naar het inlogscherm
Scenario: Link Annuleren
Als Gebruiker op link annuleren klikt
Dan gaat gebruiker verder naar het inlogscherm
奔跑者Class
package nl.werkwel.cucumber;
import org.junit.runner.RunWith;
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
@RunWith(Cucumber.class)
@CucumberOptions(
plugin = {"pretty", "html:out"},
features={"."}
)
public class RunTest {
}
maven 似乎没有找到任何测试。你能分享一下你的 运行ner class 吗?
此外,您可能想为您的 testng groupid 定义范围。
编辑:
我今天学到了一些新东西...鉴于== gegeven!
我得到了你的项目 运行ning 但有变化。遵循项目的结构:
https://github.com/cucumber/cucumber-jvm/tree/master/examples/java-calculator-testng
以下是 pom 更改:
正如@chrylis 所质疑的那样,Junit 和 TestNG 都存在并且不需要。删除junit
您的依赖项将是这样的:
<dependencies>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.53.0</version>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-jvm-deps</artifactId>
<version>1.0.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-java</artifactId>
<version>1.2.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-testng</artifactId>
<version>1.2.4</version>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
我无法使用您的 Runner class 制作套件 运行 并使用 TestNGCucumberRunner class 执行。
/** Create one test method that will be invoked by TestNG and invoke the
* Cucumber runner within that method.
*/
@CucumberOptions(plugin = "json:target/cucumber-report-composite.json")
public class RunCukesByCompositionTest {
@Test(groups = "examples", description = "Example of using TestNGCucumberRunner to invoke Cucumber")
public void runCukes() {
new TestNGCucumberRunner(getClass()).runCukes();
}
}
对于可能遇到过我所遇到的问题的任何其他人来说,@P.J.Meish 的回答对我有用:
"I don't know about TestNG, but when running test with JUnit (at least with Java classes), the names of the classes must end with 'Test'. So maybe you need to name your testfile accordingly."
所以我重命名了我的测试运行程序 class 以 'Test' 结尾,这解决了 maven 的问题而不是 运行 我的黄瓜测试。
是的,跑步者或主要 class 名称应以测试结尾,
实际上我的 pom 文件中有 cucumber junit 和 junit 依赖项。因此它导致了与上述类似的问题。
我已经将 runner class 更改为 runnerTest,然后从 pom 文件中删除了 junit 依赖项。
效果很好。试试这个..
谢谢,这里提供的其他解决方案对于解决这个问题非常有用。
我正在尝试 运行 Maven 的两个黄瓜功能文件,但没有任何反应。我使用的是 Gherkin 的荷兰语 (NL) 版本。当我直接在 Eclipse 中或使用 Gradle 运行ning 功能文件时,它们 运行ning 很好。我在 Whosebug 上研究了所有关于这个问题的早期问题,但仍然找不到解决方案。
这是我在 Eclipse 中的项目结构: Eclipse project structure
使用命令 mvn Test 运行将项目与 Maven 连接的结果是:
Running nl.werkwel.cucumber.RunTest
Configuring TestNG with: org.apache.maven.surefire.testng.conf.TestNG652Configurator@f5c0729
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.341 sec
Results :
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
[INFO] BUILD SUCCESS
我还尝试 运行 使用: "mvn test -Dcucumber.options="src/test/resources/registratiepage.特征” 但结果是一样的
这是 POM
<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>nl.werkwel</groupId>
<artifactId>cucumber</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>cucumber</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.2.4</version>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.8.8</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.53.0</version>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-junit</artifactId>
<version>1.2.4</version>
</dependency>
</dependencies>
</project>
这是功能文件之一:
# language: nl
Functionaliteit: Testen van de Registratiepagina
Achtergrond:
Gegeven Gebruiker is op de registratiepagina
Scenario: Niet succesvolle registratie, emailadres niet gevuld
Als Gebruiker geen emailadres invult
En Klikt op de button nu registreren
Dan wordt de melding "Voer een waarde in" getoond
Scenario: Link Algeregistreerd
Als Gebruiker op link algeregistreerd klikt
Dan gaat gebruiker verder naar het inlogscherm
Scenario: Link Annuleren
Als Gebruiker op link annuleren klikt
Dan gaat gebruiker verder naar het inlogscherm
奔跑者Class
package nl.werkwel.cucumber;
import org.junit.runner.RunWith;
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
@RunWith(Cucumber.class)
@CucumberOptions(
plugin = {"pretty", "html:out"},
features={"."}
)
public class RunTest {
}
maven 似乎没有找到任何测试。你能分享一下你的 运行ner class 吗? 此外,您可能想为您的 testng groupid 定义范围。
编辑:
我今天学到了一些新东西...鉴于== gegeven!
我得到了你的项目 运行ning 但有变化。遵循项目的结构: https://github.com/cucumber/cucumber-jvm/tree/master/examples/java-calculator-testng
以下是 pom 更改: 正如@chrylis 所质疑的那样,Junit 和 TestNG 都存在并且不需要。删除junit 您的依赖项将是这样的:
<dependencies>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.53.0</version>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-jvm-deps</artifactId>
<version>1.0.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-java</artifactId>
<version>1.2.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-testng</artifactId>
<version>1.2.4</version>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
我无法使用您的 Runner class 制作套件 运行 并使用 TestNGCucumberRunner class 执行。
/** Create one test method that will be invoked by TestNG and invoke the
* Cucumber runner within that method.
*/
@CucumberOptions(plugin = "json:target/cucumber-report-composite.json")
public class RunCukesByCompositionTest {
@Test(groups = "examples", description = "Example of using TestNGCucumberRunner to invoke Cucumber")
public void runCukes() {
new TestNGCucumberRunner(getClass()).runCukes();
}
}
对于可能遇到过我所遇到的问题的任何其他人来说,@P.J.Meish 的回答对我有用:
"I don't know about TestNG, but when running test with JUnit (at least with Java classes), the names of the classes must end with 'Test'. So maybe you need to name your testfile accordingly."
所以我重命名了我的测试运行程序 class 以 'Test' 结尾,这解决了 maven 的问题而不是 运行 我的黄瓜测试。
是的,跑步者或主要 class 名称应以测试结尾,
实际上我的 pom 文件中有 cucumber junit 和 junit 依赖项。因此它导致了与上述类似的问题。
我已经将 runner class 更改为 runnerTest,然后从 pom 文件中删除了 junit 依赖项。
效果很好。试试这个..
谢谢,这里提供的其他解决方案对于解决这个问题非常有用。