Java 如何使用junit和maven运行selenium测试

Java 如何使用junit和maven运行selenium测试,java,maven,selenium,junit,cucumber,Java,Maven,Selenium,Junit,Cucumber,我想为Jenkins创建simply selenium项目。 当我使用Runner.java运行测试时,输出显示0个场景。 当我使用mvn运行测试时,例如,mvn clean verify-Dcucumber.options=“--tags@smoke”输出显示构建成功 我所有的类都在src/test/java/package中 跑步者: src/test/java/runner/runner.java 胶水: src/test/java/glue/login/LoginDef.java src

我想为Jenkins创建simply selenium项目。 当我使用Runner.java运行测试时,输出显示0个场景。 当我使用mvn运行测试时,例如,mvn clean verify-Dcucumber.options=“--tags@smoke”输出显示构建成功

我所有的类都在src/test/java/package中

跑步者: src/test/java/runner/runner.java

胶水: src/test/java/glue/login/LoginDef.java src/test/java/glue/dashboard/DashboardDef.java

黄瓜锉 src/test/resources/login/login.feature src/test/resources/smoke/page.feature

下面是我的文件夹结构截图

我不知道问题出在哪里;/我用谷歌之前,我问,我没有找到解决方案

@RunWith(Cucumber.class)
@CucumberOptions(
        strict = true,
        features = {"src/test/resources/features"},
        plugin = {"json:build/reports/cucumberRunner.json", "html:build/reports/html", "pretty"},
        monochrome = true,
        tags = {"not @ignore", "not @wip", "@login", "@smoke"},
        glue = {"src/test/java/glue", "hooks"}
)
public class Runner {
}

5.1.0
4.3.1
5.2.3
1.18.4
4.12
黄瓜
小黄瓜
${io.黄瓜.小黄瓜}
黄瓜
黄瓜-java8
${io.cumber.common}
黄瓜
黄瓜刺柏
${io.cumber.common}
朱尼特
朱尼特
${junit}
org.projectlombok
龙目
${lombok}
假如
com.codeborne
硒化物
${selenide}
org.apache.maven.plugins
maven编译器插件
3.8.0
1.8
1.8
org.apache.maven.plugins
maven surefire插件
3.0.0-M3
编辑:我将Runner.java更改为RunnerTest.java。Mvn执行测试,但所有测试都失败。所有步骤都有“您可以使用下面的代码片段实现缺少的步骤:”/

Edit2:我从RunnerTest.java中的标记中删除了“@”,目前我一直 “0个场景 0步 0m0.093s“

编辑3-问题已解决。
我在有驱动程序配置的类的glue中没有路径。实际上,我的glue-glue={“glue”,“config/browser”}。以前我只有{“glue”}。

请正确更新POM依赖项。gherkin、junit等是可传递的依赖项,当您添加直接依赖项时,maven将负责这些依赖项

关键点:我们不会将直接依赖项和传递依赖项特别是它们的版本混为一谈!这样做可能会导致不可预测的结果

您可能更喜欢下面正确的io.cucumber依赖项集,并根据您的框架需要更新cucumber v

 <dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-junit</artifactId>
    <version>4.2.6</version>
</dependency>

<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-picocontainer</artifactId>
    <version>4.2.6</version>
</dependency>

黄瓜
黄瓜刺柏
4.2.6
黄瓜
黄瓜皮容器
4.2.6

cucumber找不到您的step def实施。将glue选项更改为glue=“glue”。没有看到任何钩子包,为什么要添加它。不需要小黄瓜和junit依赖,它们将自动拉入。为了让surefire自动包含测试类,请检查此项-我将glue选项更改为glue={“glue”},我删除了gherkin和junit,但仍然有0个场景:(在标记选项中使用此选项--tags={@login或@smoke”}不起作用,仍然是[INFO]测试运行:0,失败:0,错误:0,跳过:0,运行时间:0.568秒-在runner.RunnerTestU中更新POM。请查看
 <dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-junit</artifactId>
    <version>4.2.6</version>
</dependency>

<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-picocontainer</artifactId>
    <version>4.2.6</version>
</dependency>