我正在尝试在不同的浏览器下运行我的黄瓜测试,所以我有test.xml
(是的,目前只有一种浏览器)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="SelfCare" verbose="1" thread-count="1" parallel="tests" configfailurepolicy="continue">
<parameter name="environment" value="TEST" />
<test name="Chrome">
<parameter name="browser" value="chrome" />
<parameter name="width" value="1024" />
<parameter name="height" value="768" />
<classes>
<class name="TestNGRunner">
<methods>
<include name="scenario"/>
</methods>
</class>
</classes>
</test>
</suite>
Run Code Online (Sandbox Code Playgroud)
对于这个 TestNG 运行程序类,我可以browser
从该运行程序类访问参数,但我需要将此变量传递给 Cucumber,其中根据传递的变量创建浏览器实例。到目前为止,我在没有 TestNG 的情况下使用它,并且通过环境变量传递这些变量,但是我认为如果我在不同的浏览器上并行运行测试,这将不起作用。
import cucumber.api.CucumberOptions;
import cucumber.api.testng.CucumberFeatureWrapper;
import cucumber.api.testng.PickleEventWrapper;
import cucumber.api.testng.TestNGCucumberRunner;
import org.testng.annotations.*;
@CucumberOptions(
plugin = {"html:target/cucumber-html-report",
"json:target/cucumber.json",
"pretty:target/cucumber-pretty.txt",
"junit:target/cucumber-results.xml"},
strict = true,
extraGlue = {"src/test/resources/Hooks.java"},
features = {"src/test/resources/Header.feature"}
) …
Run Code Online (Sandbox Code Playgroud) 我更新了我的黄瓜版本之后它给出了以下异常:
WARNING: You are using deprecated Main class. Please use
io.cucumber.core.api.cli.Main
Exception in thread "main" cucumber.runtime.CucumberException: Failed to
instantiate public
cucumber.runtime.java.JavaBackend(cucumber.runtime.io.ResourceLoader,io.cucum
ber.stepexpression.TypeRegistry)
Run Code Online (Sandbox Code Playgroud)
我的跑步者班级:
package hgtest.runner;
import io.cucumber.testng.AbstractTestNGCucumberTests;
import io.cucumber.testng.CucumberOptions;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
@CucumberOptions(plugin = "json:target/cucumber-report.json",
features="classpath:features",
glue="hgtest.stepdefinitions"
)
public abstract class CustomCucumberAbstractTestng extends AbstractTestNGCucumberTests {
public CustomCucumberAbstractTestng() {
}
@Test(
groups = {"cucumber"},
description = "Runs Cucumber Feature",
dataProvider = "features"
)
@Override
@DataProvider(parallel = true)
public Object[][] scenarios() {
return super.scenarios();
}
}
Run Code Online (Sandbox Code Playgroud)
Pom.xml如下:
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>${testng.version}</version> …
Run Code Online (Sandbox Code Playgroud) 转到定义功能在 vs-code 上不起作用。
\n\n我已经安装了黄瓜(小黄瓜)完整支持插件。
\n\n复制步骤:右键单击功能文件上的步骤,然后选择转到定义。
\n\n特征文件
\n\nGherkin code : When user access the Application\n
Run Code Online (Sandbox Code Playgroud)\n\n步骤定义文件
\n\nWhen(\'user access the Application\',\xc2\xa0async\xc2\xa0function\xc2\xa0() {\n\n await\xc2\xa0PageObject.open();\n\n}); \n
Run Code Online (Sandbox Code Playgroud)\n\n预期:它应该导航到步骤定义文件。
\n\n项目文件夹结构
\n\n\n\n\n我是 Cucumber 新手,我正在尝试了解该工具。在阅读文档时,我发现它被简单地定义为“支持 BDD 的工具”:
Cucumber 是一个支持行为驱动开发(BDD)的工具。
它还被描述为“验证工具”:
Cucumber 读取以纯文本形式编写的可执行规范,并验证该软件是否按照这些规范所述进行操作。
另一方面,我注意到在10分钟的教程中过度使用了“测试”这个词。
AFAIK,这个工具的作用是敏捷测试,因为它在 e2e 测试中大量使用(测试基础 = Gherkin 功能规范 + 步骤定义)。然而,该博客说的是不同的内容:
最后,记住 Cucumber 不是一个测试工具。它是一种用于获取对系统应如何工作的共识的工具。该工具允许您(但不要求您)自动验证系统的行为(如果您认为它有用)。
现在,如果这个工具并不是真正用于测试,那么它的用途是什么?
所以我有两种情况......一种开始
Given I have 1 car
Run Code Online (Sandbox Code Playgroud)
另一个开始
Given I have 2 cars
Run Code Online (Sandbox Code Playgroud)
我希望他们使用相同的步骤定义 - 即类似这样
Given('I have {int} (car|cars)',
Run Code Online (Sandbox Code Playgroud)
我知道可以指定 2 个可能的值(即汽车或汽车),但我一辈子都不记得如何指定。有人知道吗?我正在使用打字稿、量角器、角度、硒。
也尝试过
Given(/^I have {int} (car|cars)$
Run Code Online (Sandbox Code Playgroud) 您好_如果有人可以在这里提供帮助-我正在尝试使用 Cucumber 标签运行特定场景-这是我用来运行使用 Webdriver-Cucumber 框架构建的测试的表达式-
npx wdio 运行 wdio.conf.js --cucumberOpts.tagExpression='@Tag
当我使用上述命令时,没有任何反应 - 我已经在功能级别定义了标签 - '@Tag' - 因此我期望功能文件中的所有场景都将被执行,但是当我运行上述命令时 - 什么也没有发生。有人可以帮忙吗?
我正在使用“mvn test”来运行黄瓜测试,但是当我尝试使用 -Dcucumber.options=... 在命令行上传递选项时,这些选项将被忽略,并且在运行程序类中的 @CucumberOptions 中指定的选项是代替使用。例如,如果我只是尝试显示黄瓜帮助,它会忽略它并只运行测试:
C:\Maven\ArchCuke\untitled>mvn test -Dcucumber.options="--help"
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------< org.example:untitled >------------------------
[INFO] Building untitled 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ untitled ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\Maven\ArchCuke\untitled\src\main\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ untitled ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ untitled ---
[INFO] Using 'UTF-8' encoding to …
Run Code Online (Sandbox Code Playgroud) 我正在尝试将 Cucumber 4.5.x 的旧测试框架升级到更新版本。该项目是 Maven、IntelliJ、Java、Selenium 和 Cucumber 项目。
但 Cucumber 似乎要么故意误导我,要么他们的文档对我来说难以理解。
首先,我升级到版本 5.0.0,重新加载 Maven 依赖项并执行 mvn clean install。
我立即发现
import io.cucumber.core.api.Scenario was gone.
Run Code Online (Sandbox Code Playgroud)
经过一番手动搜索,我发现新的路径似乎是
import io.cucumber.core.gherkin.Scenario;
Run Code Online (Sandbox Code Playgroud)
然后我去了6.0.0版本,这里似乎没有任何场景库。
查看文档,似乎声称 Scenario 位于
io.cucumber.java.Scenario
Run Code Online (Sandbox Code Playgroud)
但这对于 4.5.x 版本来说甚至都不正确,那么我到底如何找到导入的新路径呢?
更新:
在尝试升级之前,我的插件列表中有以下内容:
io.cucumber:cucumber-core:4.5.2
io.cucumber:cucumber-expressions:7.0.2
io.cucumber:cucumber-dependencies:1.1.14
io.cucumber:cucumber-datatable_1.1.14
io.cucumber:cucumber.gherkin:5.1.0
io.cucumber:cucumber-tag-expressions:1.1.1
Run Code Online (Sandbox Code Playgroud)
在我的 pom.xml 中:
<properties>
<java.version>11</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<selenium.version>4.3.0</selenium.version>
<cucumber.version>4.5.2</cucumber.version>
<junit5.version>5.5.1</junit5.version>
</properties>
Run Code Online (Sandbox Code Playgroud)
更改 pom.xml 中的版本号并重新加载是正确的方法吗?或者我应该用项目插件列表中的较新版本替换该插件(在 IntelliJ 中)?
我应该升级任何其他 cucumber-x 插件吗?
替代方案 1:
我在 pom.xml 文件中将版本更改为 5.0.0。
构建项目:确定运行 mvn clean install -> 出现以下错误:
cannot find symbol
[ERROR] symbol: class Scenario …
Run Code Online (Sandbox Code Playgroud) cucumber maven cucumber-jvm selenium-webdriver cucumber-java
我正在编写一些黄瓜规格,我正在努力保持模块组织的功能.因此,例如,我的admin/posts控制器存储在features/admin/posts中
困难在于,每当我从该目录运行该功能时,它都无法识别features/step_definitions中的任何步骤.
简而言之,如何在功能子目录中包含所有基本step_definition?
cucumber ×10
maven ×2
bdd ×1
cucumber-jvm ×1
cucumberjs ×1
cyrillic ×1
gradle ×1
java ×1
junit ×1
protractor ×1
testing ×1
testng ×1
webdriver-io ×1