标签: cucumber-java

io.cucumber和info.cukes有什么区别

我正在尝试使用Cucumber集成BDD.但我真的很困惑io.cucumberinfo.cukes库之间的区别.以及使用哪一个.

我试图阅读并理解github README.md文件仍然无法做出正面反面.

更进一步,我不确定是什么是cucumber-jvm.为什么我们需要cucumber-junit(不能单独的junit库就足够了).

提前致谢.任何帮助深表感谢.

cucumber cucumber-junit cucumber-java

19
推荐指数
1
解决办法
9617
查看次数

java.lang.reflect.InaccessibleObjectException:无法使字段私有最终 java.util.Comparator java.util.TreeMap.comparator 可访问:模块

这是我的第一个黄瓜项目,我在设置所有内容时遵循了教程。一切似乎都是一样的,但出于某种原因我得到了这个:

\n

java.lang.ExceptionInInitializerError。\n原因:java.lang.reflect.InaccessibleObjectException:无法使字段私有最终java.util.Comparator java.util.TreeMap.comparator可访问:模块java.base不“打开java.util”到未命名模块@74ad1f1f

\n

知道如何解决这个错误吗?

\n

下面我发布了控制台中出现的所有内容以及我的 pom 文件,以防我的依赖项出现问题,尽管教程的 pom 文件中的人员是相同的。

\n

这就是我的控制台中显示的所有内容。

\n
[31mFailed scenarios:[0m\n[31muni/login/Login.feature:3 [0m# Scenario: Enter the system.\n1 Scenarios ([31m1 failed[0m)\n5 Steps ([31m1 failed[0m, [36m4 skipped[0m)\n0m0.185s\n\njava.lang.ExceptionInInitializerError\n    at cucumber.deps.com.thoughtworks.xstream.XStream.setupConverters(XStream.java:820)\n    at cucumber.deps.com.thoughtworks.xstream.XStream.<init>(XStream.java:574)\n    at cucumber.deps.com.thoughtworks.xstream.XStream.<init>(XStream.java:530)\n    at cucumber.runtime.xstream.LocalizedXStreams$LocalizedXStream.<init>(LocalizedXStreams.java:50)\n    at cucumber.runtime.xstream.LocalizedXStreams.newXStream(LocalizedXStreams.java:37)\n    at cucumber.runtime.xstream.LocalizedXStreams.get(LocalizedXStreams.java:29)\n    at cucumber.runtime.StepDefinitionMatch.runStep(StepDefinitionMatch.java:37)\n    at cucumber.runtime.Runtime.runStep(Runtime.java:300)\n    at cucumber.runtime.model.StepContainer.runStep(StepContainer.java:44)\n    at cucumber.runtime.model.StepContainer.runSteps(StepContainer.java:39)\n    at cucumber.runtime.model.CucumberScenario.run(CucumberScenario.java:44)\n    at cucumber.runtime.junit.ExecutionUnitRunner.run(ExecutionUnitRunner.java:102)\n    at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:63)\n    at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:18)\n    at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)\n    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)\n    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)\n    at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)\n    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)\n    at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\n    at org.junit.runners.ParentRunner.run(ParentRunner.java:413)\n    at cucumber.runtime.junit.FeatureRunner.run(FeatureRunner.java:70)\n    at cucumber.api.junit.Cucumber.runChild(Cucumber.java:95)\n    at cucumber.api.junit.Cucumber.runChild(Cucumber.java:38)\n    at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)\n …
Run Code Online (Sandbox Code Playgroud)

java eclipse cucumber cucumber-junit cucumber-java

17
推荐指数
3
解决办法
11万
查看次数

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

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

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

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

下面是我尝试运行测试的组合,我也粘贴了pom.xml和RunCukesTest.java文件.

在此输入图像描述

的pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>pmc</groupId>
    <artifactId>se</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>storeEnabler</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-java</artifactId>
            <version>1.2.0</version>
        </dependency>

        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-testng</artifactId>
            <version>1.2.0</version>
        </dependency>

        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-junit</artifactId>
            <version>1.2.4</version>
        </dependency>

        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>2.52.0</version>
        </dependency>

        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.4</version>
        </dependency>

        <dependency>
            <groupId>io.appium</groupId>
            <artifactId>java-client</artifactId>
            <version>3.1.0</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.9</version>
        </dependency>

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.11-beta3</version>
        </dependency>

        <dependency>
            <groupId>xml-apis</groupId>
            <artifactId>xml-apis</artifactId>
            <version>2.0.2</version>
        </dependency>

        <dependency>
            <groupId>xerces</groupId>
            <artifactId>xercesImpl</artifactId>
            <version>2.8.0</version>
        </dependency>
    </dependencies>

    <build>
        <testResources> …
Run Code Online (Sandbox Code Playgroud)

cucumber maven cucumber-jvm cucumber-junit cucumber-java

13
推荐指数
2
解决办法
2万
查看次数

始终使用Cucumber-Java8获取异常"常量池索引处的错误类型"

我正在尝试为Cucumber的Java8方言设置一个示例项目.我的问题是,我没有让它运行.我总是得到以下异常层次结构:

Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.068 sec <<< FAILURE! - in soy.wimmer.CucumberIT
Feature: Cucumber with Java8  Time elapsed: 0.051 sec  <<< ERROR!
cucumber.runtime.CucumberException: Failed to instantiate class soy.wimmer.CucumberStepdefs
[…]
Caused by: java.lang.reflect.InvocationTargetException: null
[…]
Caused by: cucumber.runtime.CucumberException: java.lang.IllegalArgumentException: Wrong type at constant pool index
[…]
Caused by: java.lang.IllegalArgumentException: Wrong type at constant pool index
    at sun.reflect.ConstantPool.getMemberRefInfoAt0(Native Method)
    at sun.reflect.ConstantPool.getMemberRefInfoAt(ConstantPool.java:47)
    at cucumber.runtime.java8.ConstantPoolTypeIntrospector.getTypeString(ConstantPoolTypeIntrospector.java:37)
    at cucumber.runtime.java8.ConstantPoolTypeIntrospector.getGenericTypes(ConstantPoolTypeIntrospector.java:27)
    at cucumber.runtime.java.Java8StepDefinition.<init>(Java8StepDefinition.java:45)
    at cucumber.runtime.java.JavaBackend.addStepDefinition(JavaBackend.java:162)
    at cucumber.api.java8.En.Given(En.java:190)
    at soy.wimmer.CucumberStepdefs.<init>(CucumberStepdefs.java:8)
[…]

Results …
Run Code Online (Sandbox Code Playgroud)

bdd cucumber java-8 cucumber-jvm cucumber-java

9
推荐指数
2
解决办法
4947
查看次数

如何在extentReports中为Cucumber-java中的失败步骤编写自定义失败消息

我想在我的Cucumber ExtentReports中编写自定义失败消息.

工具使用:

黄瓜

Java的

JUnit的

ExtentReports

现在发生了什么:

我有一个黄瓜场景.

Given something
When I do something
Then this step fails
Run Code Online (Sandbox Code Playgroud)

失败的步骤失败:

Assert.assertTrue("CUSTOM_FAIL_MSG", some_condition);
Run Code Online (Sandbox Code Playgroud)

在ExtentReport中,我看到了 在此输入图像描述

我想要实现的目标:

在此输入图像描述

到目前为止我研究过的内容:

有一个scenario.write("")功能,但这会在报告中创建一个新的信息日志(但我正在查找CustomFailure消息而不是新的日志条目)

scenario.stepResults具有在报告中显示的String.但是,我无法找到一种方法来设置相同的值.

有什么想法吗?

selenium junit4 cucumber-java extent selenium-extent-report

9
推荐指数
1
解决办法
1742
查看次数

Katalon - 将记录的测试脚本导出到java/junit

是否可以选择将录制的测试脚本导出到Katalon工作室的Java/JUuit(类似于slenium IDE)?因为我正在处理的应用程序只与IE兼容; 所以我不能使用selenuim IDE.所以我不得不找其他工具来播放/录制会话.

提前感谢您的帮助!谢谢!

selenium cucumber-jvm selenium-webdriver cucumber-java katalon-studio

9
推荐指数
2
解决办法
9036
查看次数

在编写单元测试用例时,如何将整数数组从 Cucumber 功能文件传递到步骤定义

我正在学习 Cucumber 进行单元测试,并尝试为 Radix Sort 代码编写单元测试。但我无法弄清楚如何提供整数数组作为特征文件中基数排序代码的输入。

我尝试提供以下输入:

  Scenario: Sorting integer array using radix sort within the specified range
    Given The nonnull integer array 10,25,0,1
    When radix sort is performed over the range from 0 to 7
    Then validate if the array is sorted

Run Code Online (Sandbox Code Playgroud)

对于上述场景,cucumber 需要下面提到的代码体:

@Given("The nonnull integer array {double}")
public void the_nonnull_integer_array(Double double1) {
    // Write code here that turns the phrase above into concrete actions
    throw new io.cucumber.java.PendingException();
}
Run Code Online (Sandbox Code Playgroud)

如果我尝试输入为

    Scenario: Sorting integer array using radix sort within …
Run Code Online (Sandbox Code Playgroud)

junit unit-testing cucumber cucumber-junit cucumber-java

9
推荐指数
1
解决办法
2万
查看次数

使用带有IntelliJ的Cucumber

有谁知道为什么'Cucumber Java'没有出现在"编辑配置 - >默认值 - > ????中,即使我的pom文件已下载依赖项,即黄瓜-java(1.1.5)

<dependencies>
        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-core</artifactId>
            <version>1.1.5</version>
        </dependency>
        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-java</artifactId>
            <version>1.1.5</version>
        </dependency>
        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-junit</artifactId>
            <version>1.1.5</version>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-server</artifactId>
            <version>2.38.0</version>
        </dependency>
    </dependencies>
Run Code Online (Sandbox Code Playgroud)

Pom.xml文件用于安装所有必要的插件,即用于java插件的黄瓜

intellij-idea cucumber cucumber-java

8
推荐指数
1
解决办法
1万
查看次数

Maven Surefire插件没有重新运行失败的Cucumber测试

我正在使用Selenium WebDriver(版本2.53.0)的Java实现来针对Web应用程序运行一些自动化测试.使用Cucumber的Java实现(版本1.2.3)以行为驱动测试格式编写测试.我使用Maven(版本3.3.9)导入所有依赖项,并构建和运行测试.使用Cucumber标签将测试组织成不同的类别.例如,我可以使用以下命令从命令行运行用@JohnnyBravo标记的一类测试:

cd path_to_Maven_POM_file
mvn clean test -Dcucumber.options="--tags @JohnnyBravo"
Run Code Online (Sandbox Code Playgroud)

在做了一些研究之后,我发现你可以使用Maven SureFire插件通过-Dsurefire.rerunFailingTestsCount=2在上面的Maven命令中根据此链接添加" "来重新运行失败的测试.然后,我尝试使用下面的命令重新运行该类测试,同时确保其中一些肯定会失败,以便查看它们是否会重新运行:

mvn clean test -Dcucumber.options="--tags @JohnnyBravo" -Dsurefire.rerunFailingTestsCount=2
Run Code Online (Sandbox Code Playgroud)

不幸的是,失败的测试没有重新运行.我在这做错了什么?

我的POM文件如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.company</groupId>
    <artifactId>regression-test</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <properties>
        <cucumber.version>1.2.3</cucumber.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>

        <dependency>
            <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
            <version>2.8.2</version>
        </dependency>

        <dependency>
            <groupId>net.sourceforge.jtds</groupId>
            <artifactId>jtds</artifactId>
            <version>1.3.1</version>
        </dependency>

        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-picocontainer</artifactId>
            <version>${cucumber.version}</version>
        </dependency>
        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-java</artifactId>
            <version>${cucumber.version}</version>
        </dependency> …
Run Code Online (Sandbox Code Playgroud)

java command-line maven-surefire-plugin selenium-webdriver cucumber-java

8
推荐指数
1
解决办法
753
查看次数

cucumber-jvm从版本4升级到版本6时是否需要额外的上下文配置?

我正在使用 cucumber-jvm 在 Kotlin 中执行一些功能测试。

我有标准的空跑步者课程:

@RunWith(Cucumber::class)
@CucumberOptions(features=[foo],
    glue=[bar],
    plugin=[baz],
    strict=true,
    monochrome=true)
class Whatever
Run Code Online (Sandbox Code Playgroud)

实际步骤是在另一个类中使用 @ContextConfiguration springframework 注解定义的。该类还使用其他 spring 功能,如 @Autowire 或 @Qualifier

@ContextConfiguration(locations=["x/y/z/config.xml"])
class MyClass {
    ...
    @Before
    ...

    @Given("some feature file stuff")
    ...

    // etc
}
Run Code Online (Sandbox Code Playgroud)

这一切在 Cucumber 版本 4.2.0 中都可以正常工作,但是升级到版本 6.3.0 就会出现问题。更新导入以匹配新的 Cucumber 项目布局后,测试现在失败并出现以下错误:

io.cucumber.core.backend.CucumberBackendException:请使用一些上下文配置注释胶水类。

它提供了示例来说明其含义...

例如:

    @CucumberContextConfiguration
    @SpringBootTest(classes = TestConfig.class)
    public class CucumberSpringConfiguration {}
Run Code Online (Sandbox Code Playgroud)

或者:

    @CucumberContextConfiguration
    @ContextConfiguration( ... )
    public class CucumberSpringConfiguration {}
Run Code Online (Sandbox Code Playgroud)

看起来它告诉我我可以将 @CucumberContextConfiguration 添加到 MyClass 中。

但为什么?

我明白了 @CucumberContextConfiguration 的意思,这里解释得很好,但是为什么我现在需要版本 6,而版本 4 …

bdd cucumber cucumber-jvm cucumber-junit cucumber-java

8
推荐指数
2
解决办法
3万
查看次数