如何在多个场景中在黄瓜中运行特定场景?
特征文件
Feature: Test Test Smoke scenario
Scenario: Test login with valid credentials
Given open firefox and start application
Run Code Online (Sandbox Code Playgroud)
jhbhhjhj 当我点击登录并输入有效的“kumar.rakesh@yopmail.com”和有效的“admin@123”然后点击登录,用户应该能够成功登录
Scenario: Test shop for cart
Given Click on shop for carts
And select plates
When Click on Add to cart
Then product should be added in the cart successfully
And verify the product
Scenario: Test login with valid credentials1
Given open firefox and start application
When I click on Login
And enter valid "kumar.rakesh@yopmail.com" and valid "admin@123"
Then Click …Run Code Online (Sandbox Code Playgroud) 考虑我有以下功能文件:
登录功能
功能:登录网站
场景:现场登录验证
首页.专题
功能:欢迎页面验证
场景:验证登录后出现的页面
在Home.feature文件中,我需要先执行Login.feature,然后调用home.feature。因此,当我从跑步者测试中执行 home 时,它将依次执行登录,然后执行 home。
RunnerTest.java
import org.junit.runner.RunWith;
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
@RunWith(Cucumber.class)
@CucumberOptions(strict = false, features = {
"src/test/resources/Features/Home.feature",
}, glue = { "tests" }, plugin = "html:target/cucumber-reports", format = { "pretty",
"json:target/cucumber.json" }, tags = { "~@ignore" })
public class RunnerTest {}
Run Code Online (Sandbox Code Playgroud) 我正在尝试将我的黄瓜测试迁移到 ,cucumber-junit以便cucumber-junit-platform-engine能够使用新的平台功能。如何重新定义我的跑步者以使用旧的@CucumberOptions. 我正在调查这个问题,但似乎还找不到正确的方法。
在我使用这些选项之前:
@CucumberOptions(
plugin = ...,
features = ...,
tags = ...,
glue = ...
)
Run Code Online (Sandbox Code Playgroud)
有没有直接的方法将其迁移到平台引擎?
自从我升级到IntelliJ 15.0.3的最新社区版本后,每当我使用功能定义文件自动生成步骤定义时alt + enter,它都会以驼峰形式创建方法,而不是使用下划线的常规样式.
例如,它曾经像这样生成
@When("Cucumber is awesome")
public void cucumber_is_awesome() {}
Run Code Online (Sandbox Code Playgroud)
但现在它产生了通常的camelCase约定:
@When("Cucumber is awesome")
public void cucumberIsAwesome() {}
Run Code Online (Sandbox Code Playgroud)
有没有办法将此设置更改回第一个样式?
谢谢
Usage: java cucumber.api.cli.Main [options] [ [FILE|DIR][:LINE[:LINE]*] ]+
Options:
-g, --glue PATH Where glue code (step definitions and hooks) is loaded from.
-f, --format FORMAT[:PATH_OR_URL] How to format results. Goes to STDOUT unless PATH_OR_URL is specified.
Built-in FORMAT types: junit, html, pretty, progress, json.
FORMAT can also be a fully qualified class name.
-t, --tags TAG_EXPRESSION Only run scenarios tagged with tags matching TAG_EXPRESSION.
-n, --name REGEXP Only run scenarios whose names match REGEXP.
-d, --[no-]-dry-run Skip execution of glue code. …Run Code Online (Sandbox Code Playgroud) 问题
Cucumber 在使用 CLI 运行器运行时找不到步骤定义,但在使用 junit 运行器运行时可以找到它。
也就是说,当从 linux 命令行运行黄瓜 jvm 时,找到了特征文件,但没有找到步骤定义文件,产生消息,"Undefined scenarios: src/test/java/com/logic/testing/ClassifyDocuments.feature:8"
(完整消息见底部)
但是,通过 Maven 运行,例如“mvn test”,会找到步骤定义并且测试按预期执行。我已经看过类似的问题,并且在我秃顶之前希望得到任何帮助。
- 文件是否需要以不同的方式组织,例如使用“资源”目录?
- 胶水参数 com.logic.testing 是否不正确?
- 类路径有问题吗?
详细信息
这是在“自动测试”文件夹中发出的命令行语句:
java -cp "/usr/local/bin/cucumber/cucumber-core-1.2.5.jar:/usr/local/bin/cucumber/*:." cucumber.api.cli.Main -g com.logic.testing src/test/java/com/logic/testing/ClassifyDocuments.feature -s
代码的组织方式如下:
auto-test/
src/test/java
com.logic.testing
StepDefinitions.java
ClassifyDocuments.feature
src/main/java
com.logic.testing
AutoTestController.java(包含一个被 StepDefinitions.java 引用的类)
target/test-classes/com/logic/testing/
StepDefinitions.class
target/classes/com/logic/testing/
AutoTestController.class
在 /usr/local/bin/cucumber/ 是:
cucumber-core-1.2.5.jar Cucumber
-java-1.2.5.jar Cucumber
-jvm-deps-1.05.jar gherkin
-2.12.2.jar
ClassifyDocuments.feature 文件:
Feature: Classify documents in a package
As an auditor
I want to use software
So …Run Code Online (Sandbox Code Playgroud) java command-line-interface cucumber cucumber-jvm cucumber-java
我正在使用jvm黄瓜并行插件,并希望重新运行我失败的测试用例.在.pom文件中需要进行哪些更改.
<plugin>
<groupId>com.github.temyers</groupId>
<artifactId>cucumber-jvm-parallel-plugin</artifactId>
<version>4.2.0</version>
<executions>
<execution>
<id>generateRunners</id>
<phase>generate-test-sources</phase>
<goals>
<goal>generateRunners</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/runner</outputDirectory>
<glue>
<package>com.xxx.stepdefs</package>
<package>com.xxx.cucumber.hooks</package>
</glue>
<featuresDirectory>src/test/resources/feature</featuresDirectory>
<cucumberOutputDir>${basedir}/target/cucumberreport/json</cucumberOutputDir>
<format>json</format>
<strict>true</strict>
<plugins>
<plugin>
<name>json</name>
</plugin>
</plugins>
<useTestNG>true</useTestNG>
<namingScheme>pattern</namingScheme>
<namingPattern>Parallel{c}TestRunner</namingPattern>
<parallelScheme>FEATURE</parallelScheme>
</configuration>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud) 谁能告诉我在黄瓜报告 json 中捕获的 step.result 中找到的持续时间单位是什么?是毫秒、微秒、纳秒还是其他什么?
我正在尝试通过 intellij 启动一个黄瓜(用 kotlin 编写)。
我有一个步骤定义类,描述如下:
当我从 Intellij 启动测试时,“Given”方法出现此异常:java.lang.IllegalStateException: Could parse the return type of the lambda at BusinessEventSteps.kt:19
从命令行使用“mvn clean install”时,测试运行良好。
我的环境:
我是 Cucumber 的新手并试图解决简单的问题:
我创建了一个 Java 项目并将所有与黄瓜相关的 jars 引用到该项目的构建路径(称为“CukeTest4”),下面是显示 java 文件和功能文件的结构。当我在 Eclipse 中将此功能文件作为 Cucumber 功能运行时,它运行良好。
现在,我想从另一个主要方法运行它。我创建了另一个 Java 项目,添加了一个带有 main 方法的类,下面的代码在默认包中。
import cucumber.api.cli.Main;
public class UseCukeFromMain {
public static void main(String[] args) throws Throwable
{
Main.main(new String[]{"-g", "C:/work/workspaces/neon2_wks_new1/Cuketest4/src/com/cuke", "C:/work/workspaces/neon2_wks_new1/Cuketest4/src/com/cuke/cukefeature.feature"});
}
}
Run Code Online (Sandbox Code Playgroud)
我已经在 java 文件中提供了该方法的实现,因为它在 Eclipse 中运行良好,但显示了下面的消息来实现该方法
[33mU[0m
1 Scenarios ([33m1 undefined[0m)
1 Steps ([33m1 undefined[0m)
0m0.000s
You can implement missing steps with the snippets below:
@Given("^I want to write a step with precondition$")
public void i_want_to_write_a_step_with_precondition() throws Throwable {
// Write code …Run Code Online (Sandbox Code Playgroud) cucumber ×10
cucumber-java ×10
cucumber-jvm ×4
java ×4
bdd ×2
exception ×1
junit5 ×1
kotlin ×1
selenium ×1
xml ×1