Maven忽略了黄瓜测试

Fra*_*ank 2 java cucumber maven

我正在尝试运行Maven的两个黄瓜功能文件,但没有任何反应。我正在使用荷兰语(NL)的小黄瓜。当我直接在Eclipse中或使用Gradle运行功能文件时,它们运行良好。我在Stackoverflow上研究了有关此问题的所有较早问题,但仍然找不到解决方案。

这是我在Eclipse中的项目结构Eclipse项目结构

使用命令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
Run Code Online (Sandbox Code Playgroud)

我也尝试使用:“ mvn test -Dcucumber.options =” src / test / resources / registratiepage.feature“,但是结果是一样的

这是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>
Run Code Online (Sandbox Code Playgroud)

这是功能文件之一:

# 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
Run Code Online (Sandbox Code Playgroud)

跑步者班

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 {

}
Run Code Online (Sandbox Code Playgroud)

小智 8

对于其他任何可能遇到我所遇到问题的人,@ PJMeish的答案对我有用:

“我不了解TestNG,但是当使用JUnit(至少使用Java类)运行测试时,这些类的名称必须以'Test'结尾。因此也许您需要相应地命名测试文件。”

因此,我将测试运行器类重命名为以“测试”结尾,从而解决了行家不运行我的黄瓜测试的问题。


小智 8

是的,运行程序或主类名称应以 Test 结尾,


Sid*_*Sid 3

看起来maven没有找到任何测试。可以分享一下你的跑步课程吗?另外,您可能想定义 testng groupid 的范围。

https://github.com/cucumber/cucumber-jvm/blob/master/examples/java-calculator-testng/src/test/java/cucumber/examples/java/calculator/RunCukesTest.java

编辑:

我今天学到了一些新东西...... 鉴于== gegeven!

我得到了你正在运行的项目,但有一些变化。遵循项目的结构: 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>
Run Code Online (Sandbox Code Playgroud)

我无法使套件与您的 Runner 类一起运行,并使用 TestNGCucumberRunner 类来执行。

/** 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();
    }
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述