问题标签 [cucumber-junit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
9629 浏览

java - 将 Cucumber 场景 DataTable (HashMap) 转换为方法调用

我正在为使用 Cucumber(-JVM)、Junit、Java 8 接受 XML 文件(最多数百个字段)的应用程序创建验收测试框架。我创建了一个库,该库使用大量类将 POJO 序列化为 XML Builder 接口(以避免有几十个构造函数并拥有各种声明性 API),即:

我制作这个库是因为我想在我的测试中动态生成有效的 XML 文件。我希望我的黄瓜场景读起来像英语,所以我决定使用数据表而不是写类似的东西:

有 50 条不同的“和”行。所以它们看起来像这样:

问题:

我希望黄瓜数据表(已转换为 HashMap)中的键映射到我的构建器模式的方法名称。起初我认为使用 lambdas 和方法引用可以让我完成此任务,但我还没有找到方法。

所以我的下一个想法是反思。我决定在属性文件中存储从 Cucumber Data 表键到方法名称的映射,例如:

但是我遇到了一个问题:黄瓜数据表中的一些字段映射到我的 XML 数据绑定库中深度嵌套的字段(由于 XML 模式)。例如:

“X 字段”嵌套在 A 字段中。所以在我的测试方法中我需要做:

但是在java中使用反射,你需要在事实之前知道参数数据类型(或者我认为)。例如,如果我想找出与方法关联的参数类型:

我确信我可以找到解决方法,但最终我似乎走上了一条“hacky”的道路。有没有更好的方法来解决这个问题?还是我在“正确”的道路上?

0 投票
1 回答
2306 浏览

java - CucumberException : 无法创建场景运行器

当我尝试运行我的场景大纲时,我收到此错误 - CucumberException:无法创建场景运行器。

几天前,相同的场景大纲成功运行,但现在我收到此错误。

我在网上查找了这个错误,发现很多帖子表明它是在使用 junit 4.12 时发生的。但是我使用的是junit 4.11,我仍然得到相同的结果。

这是我的 pom 依赖项:

这是黄瓜代码:

有什么建议么 ?

0 投票
1 回答
1584 浏览

java - Cucumber JUnit:当场景步骤定义跨类分布时如何截屏?

我有一个功能文件:

这些步骤定义分为 3 类。

由于 Scenario_1 和 Scenario_2 的语句很常见,因此它们的定义被归为一类:

Scenario_3 语句定义在另一个类中。

Scenario_4 语句在另一个类中定义。

我需要场景 1、2、3 的屏幕截图,因为它们处理前端。但是,我不想要 Scenario4 的任何屏幕截图,因为它处理后端。

我运行功能文件:

1) Scenario_1 和 Scenario_2 运行良好。

2) 当我运行 Scenario_3 时,我在 SearchStepDefinitions 的“//Take screenshot”处得到 NullPointerException。

3) 当我运行 Scenario_4 时,我在 SearchStepDefinitions 的“//Take screenshot”处得到 NullPointerException。

我应该如何构建我的程序,以便我可以将语句保存在不同的类中,同时在需要时截取屏幕截图?

0 投票
4 回答
26676 浏览

maven - 直接从可执行 jar 运行 Cucumber 测试

我有一个带有黄瓜和 maven 的项目,我也在使用 JUnit。

我能够从 Eclipse 成功运行和构建我的项目。

现在我想从另一个系统中的命令行运行测试,它(应该)没有安装 eclipse 或 cucumber。我有一个想法,我们可以从 jar 创建一个 JAR,我们可以通过 java cli 命令运行测试。

下面是我试图从中运行测试的组合,我也在粘贴 pom.xml 和 RunCukesTest.java 文件。

在此处输入图像描述

pom.xml

RunCukesTest.java

  • 我在类路径中添加了 JUNIT Jar。

我以两种方式生成罐子,

1)使用 -> 项目 -> 导出 -> JAR 文件导出 JAR 在最后一步中选择 MAIN 类为:RunCukesTest 因为我在这里为入口点定义了主方法(我们在这个类中需要这个主方法吗???)

导出后,我在命令下运行,

1.1java -jar xyz.jar 我收到错误:找到 NoClassDef:org/junit/runner/JUnitCore

所以我这样运行:

1.2java -cp xyz.jar;junit-4.12.jar org.junit.runner.JUnitCore 它说,

它仍然没有工作,所以我最后附加了 RunCukesTest 文件命名空间,
1.3java -cp xyz.jar;junit-4.12.jar org.junit.runner.JUnitCore se.stepDefinations.RunCukesTest
它给了我错误:类型 cucumber.api.junit.Cucumber 不存在

2) 所以我放弃了导出 jar 的选项,现在我正在尝试使用来自 maven Build 的 JAR。我选择了使用 Maven Build 运行的 POM,它在目标文件夹中创建了 2 个 jar,

1 名称为 xyz-0.0.1-SNAPSHOT,大小为 16kb,另一个名称为
xyz-0.0.1-SNAPSHOT-jar-with-dependencies,大小为 33mb

1)我使用依赖项运行更大的文件

它给了我信息:

没有功能目录的路径

2)所以我尝试将命名空间附加到 RunCukesTest 文件,

我收到一个错误:找不到文件或目录

,当然正如错误所说,它试图在目标文件夹中找到一个功能。

同样,我想在任何其他计算机(如可执行文件)中独立于任何此类项目文件依赖项运行 JAR。

任何帮助,将不胜感激。谢谢。

0 投票
1 回答
5486 浏览

java - 黄瓜报告出错

我正在使用 Cucumber报告 api来获得更好的报告。我的项目不是 Maven 项目,现在无法更改项目结构。所以我添加了对我的项目的所有依赖项,但现在仍然出现“java.lang.IllegalArgumentException:文件'target/cucumber.json'不包含功能!”之类的错误。

所有添加的 jar 和版本如下所示。

在此处输入图像描述

我还在这里添加了我的 runner 类,这可能有助于调试。

我还附上了项目结构图像。 在此处输入图像描述

我观察到 feature-overview.html 是在文件夹结构下生成的,但是当我打开此文件时它已损坏,它在此文件上显示此错误。

在此处输入图像描述 有人可以帮我解决这个错误吗?

0 投票
3 回答
26555 浏览

java - 黄瓜日食中步骤没有匹配的胶水代码错误

我正在尝试运行下面提到的功能文件。

当我运行此功能文件时,它会给出一个错误,说明如下,并且步骤已用“步骤没有胶水代码”的语句突出显示。

错误如下所示。我想运行上面的功能文件并了解该功能的缺失文件。

拜托,我是黄瓜的初学者,我想解决这个问题。如果可以,请你帮助我。

0 投票
1 回答
421 浏览

cucumber - cucumber + java : 将第 1 步返回的参数传递给第 2 步

我是黄瓜新手。我们有以下通过黄瓜实现 UI 自动化的用例。

请考虑以下示例。

在TestNg中,

现在我们正在转向黄瓜,我们需要在黄瓜中完成上述示例。

特点:表格。


场景:登录到应用程序
给定创建名为“formname”的表单,
然后搜索“formname”</p>

我们面临的问题 -> 在第 1 步中返回的表单名,我们不知道如何将其传递给第 2 步。在场景中,我们需要将此表单名称传递给在各个类中实现的不同步骤定义。

我试图在网上搜索,但没有找到任何特定于我们需要的东西。

如果有人能给我们一些指示/建议,那将是很大的帮助。

0 投票
3 回答
17767 浏览

java - 如何根据特征文件位置在黄瓜java中创建动态胶水?

我有一个使用 maven 构建的 java 项目。

我有多个包,基于不同功能的功能文件。项目测试结构如下。

我只有一个 RunCukesTest.java 文件

在这种情况下,它运行我所有的功能文件。但它无法找到我对该功能的特定步骤定义。所以我必须将胶水选项设置为“com.usercreation”。但是,如果我在运行用户验证功能文件时这样做,它将无法获取适当的步骤定义。在我的用例中,我不希望两个步骤 def 文件都在同一个包中,因为它们有许多具有不同功能的步骤。

有没有一种可能的方法,我可以根据功能文件正在运行的包名称动态地提供粘合选项。或者我错过了这个项目的任何其他方法。

0 投票
2 回答
681 浏览

java - junit黄瓜缺少步骤错误

Java - 黄瓜示例

看起来我缺少步骤,它抱怨缺少步骤并将它们视为未定义

.feature 文件:

步骤文件:

当我运行测试

6 场景 2 未定义 您可以使用以下代码片段实现缺少的步骤:

0 投票
1 回答
380 浏览

cucumber - 将黄瓜升级到版本 1.2.4 时的运行时选项错误

当我尝试将我的黄瓜版本从 1.1.2 升级到 1.2.4 时出现此错误。我在JDK1.8上运行。

这是代码不起作用

这是错误输出: