我想做的是从命令行传递黄瓜选项到执行带有标记名@extecuteThese的场景,但我也想排除标记名为@WIP的场景,所以我到目前为止做的是
-Dcucumber.options='--tags @executeThese --tags ~@WIP'
Run Code Online (Sandbox Code Playgroud)
但不幸的是,它没有考虑〜@ WIP标签选项
任何帮助,非常感谢!!
我正在创建一个应该同时使用 Cucumber 和 Spring Boot 平台的小型测试框架。这个想法是让整个应用程序被打包成一个单独的 jar,并在 BDD 特性被正确参数化后运行。
该框架以命令行运行模式启动,如下所示:
public class FwApplication implements CommandLineRunner {
public static void main(String[] args) {
SpringApplication.run(FwApplication.class, args);
}
@Override
public void run(String... arg0) throws Exception {
JUnitCore.main(CucumberIntegration.class.getCanonicalName());
}
}
Run Code Online (Sandbox Code Playgroud)
然后是 CucumberIntegration 类:
@RunWith(Cucumber.class)
@CucumberOptions(features = "config/features")
@ContextConfiguration(classes= AppConfiguration.class)
public class CucumberIntegration {
}
Run Code Online (Sandbox Code Playgroud)
我还有一些简单的测试,它们在我的 IDE 下运行良好,但是当我尝试打包应用程序并运行它时,java -jar fw-0.0.1-SNAPSHOT.jar我会看到以下内容:
There was 1 failure:
1) initializationError(com.fmr.bddfw.test.CucumberIntegration)
cucumber.runtime.CucumberException: No backends were found. Please make sure you have a backend module on your CLASSPATH.
at …Run Code Online (Sandbox Code Playgroud) 我是 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 测试时如何获取 Spring 应用程序中写入的日志语句?
我正在获取步骤定义中写入的日志,但我没有从实际代码中获取日志。
提前致谢。
我想知道在java Cucumber 中是否有任何方法可以将HashMap 转换为DataTable。我试着做一些谷歌搜索,发现相反的情况是可能的。关于如何实现这一点的任何想法?
提前致谢。
我有一个类似于以下的小黄瓜场景:
Scenario Outline: Test some behaviour
Given a set of preconditions
When an event occurs
Then my application has to behave in a particular manner
And respond as expected
Run Code Online (Sandbox Code Playgroud)
当我执行这个场景时,我的报告说
0 个场景,执行 0 个步骤。
然而,当我使用示例执行场景时,我的设置工作正常。
我错过了什么吗?
我的要求是从外部 excel 文件中读取示例,而不是将其硬编码到功能文件中。我有 100 多个难以在特征文件中维护的示例。你能帮我解决这个问题吗?
这是我的场景 -
Scenario Outline: Browser Test
When I visit the URL <base>/<page>/<ordNumber>/<custName>
Then the browser contains test <custNumber>
Examples:
| base | page | ordNumber | custName |
| http://www.stackoverflow.com | orders | 123 | John |
| http://www.stackoverflow.com | orders | 456 | Mike |
| http://www.stackoverflow.com | orders | 789 | Tom |
Run Code Online (Sandbox Code Playgroud)
我想用示例数据创建一个 excel 文件并在运行时加载它
例子.xls
| base | page | ordNumber | custName |
| http://www.stackoverflow.com | orders | 123 | …Run Code Online (Sandbox Code Playgroud) 让我们有以下功能文件,
Feature: Search Employees
Background:
Given following employees exists
| id | name | department |
| 1 | Jack | HR |
| 2 | Rachel | Finance |
| 3 | Mike | HR |
| 4 | Emma | IT |
Scenario: Get Employees By Department
Given user wants to get list employees in a department
When searched for department = 'HR'
Then following list of employees are returned
| id | name | department |
| …Run Code Online (Sandbox Code Playgroud) 报告未生成当我使用黄瓜 Maven 报告插件时,请在此处查看图片
我正在用java编写并使用带有eclipse的cucumber来搜索具有以下要求的类似IP的字符串
应该接受由句点分隔的四位数序列,其中数字序列定义如下:任何单个数字,任何两位数字字符(如果第一个字符是非零),一个一个后跟一个零,一个或两个后跟任何数字
通过在 Stepdefs.java 文件中编写适当的正则表达式,这就是我写的
@When("^test_ip_address ((?:(\\d)|(1[0-2]\\d)|([1-9]\\d))\\.){3}(?:(\\d)|([1-9]\\d)|(1[0-2]\\d))$")
public void test_ip_address(String arg1) throws Throwable {
System.out.println("test_ip_address true for: " + arg1);
}
Run Code Online (Sandbox Code Playgroud)
现在,当我在 Test.feature 文件中为此方法编写测试(用 Gherkin 语言)时,第一个测试总是失败,测试(应该全部通过)
When test_ip_address 1.2.3.4
When test_ip_address 123.34.76.109
When test_ip_address 123.34.76.109
When test_ip_address 105.22.33.44
Run Code Online (Sandbox Code Playgroud)
这不是价值问题,就像当我重新排序这些测试时,它总是第一个失败,即使我在另一个测试中使用了完全相同的值,它通过了!这是我得到的错误
cucumber.runtime.CucumberException: Arity mismatch: Step Definition 'skeleton.Stepdefs.test_ip_address(String) in file:(file path..)' with pattern [^test_ip_address ((?:(\d)|(1[0-2]\d)|([1-9]\d))\.){3}(?:(\d)|([1-9]\d)|(1[0-2]\d))$] is declared with 1 parameters. However, the gherkin step has 7 arguments [3., 3, null, null, 4, null, null]
Run Code Online (Sandbox Code Playgroud)
我搜索了错误,当测试中的参数数量与方法中的参数数量不同时,即使我使用 (?:) 将字符串作为一个参数传递,我也不知道在哪里这7个论点来自!也不是错误的原因
cucumber-java ×10
cucumber ×5
cucumber-jvm ×5
java ×5
bdd ×3
spring-boot ×2
gherkin ×1
log4j ×1
maven ×1
regex ×1
serenity-bdd ×1