当前位置: 首页 > 知识库问答 >
问题:

cucumber选项注释

年高洁
2023-03-14

cucumber-jvm javadocs 指出,glue 元素的目的是指定步骤定义和钩子的位置。但是,这似乎对我不起作用。假设我在目录 a 中有我的功能,在目录 b 中有我的步骤定义。然后

@Cucumber.Options(
        features= "directory_a", 
            glue="directory_b"
)

将从directory_a加载我的功能文件,但不会从directly_b加载我的步骤定义。但是,如果我使用

@Cucumber.Options(
        features= {"directory_a", "directory_b"}
)

然后加载目录_a中的特征,并提取目录_ b中的步骤定义。这正是我想要的,然而,我不明白为什么前者不起作用?我猜这与期望URI的格式不同有关(也许我需要在前面加一个classpath://或类似的东西),但我在文档中找不到任何有关这方面的信息。

共有3个答案

夏英发
2023-03-14

嗨,据我所知,这一切都取决于您的项目结构。例如,如果在根级别和 StepDefinition 中添加“Directory_a”(包含功能文件的目录),则 src 中的 Hooks

Dir_a
|
src
   |---main
   |---test
          |------java
                     |------Dir_b
                     |------Dir_c

当你在“Dir_c”中时说“Dir_b”它会识别“Dir_b”或同一级别中的任何目录,没有任何额外的路径,所以,它将是胶水= {“Dir_b”},但是当你查看包含功能文件的目录时,你必须从根级别给出路径在这种情况下,它的功能= {“Dir_a”}或给出实际路径,例如:- “E://Project_Name//Dir_a”也应该有效

如果功能目录不在根级别,请确保提供类似“src/path to feature directory”之类的路径

它将很好地工作:)

杨慎之
2023-03-14

我也遇到了这个问题...到目前为止,它似乎是:

“功能”正在查找文件系统路径:

features = "src/foo/bar"

而“胶水”正在寻找包名称:

glue = "foo.bar"

不知道为什么他们不同,但这似乎是为我工作。

祝花蜂
2023-03-14

我已经成功地使用了这样的东西:

@RunWith(Cucumber.class)
@Cucumber.Options(
    //this code will only look into "features/" folder for features
    features={"classpath:features/"},
    glue = { "com.mycompany.cucumber.stepdefinitions", "com.mycompany.cucumber.hooks" },
    format = { "com.mycompany.cucumber.formatter.RuntimeInfoCatcher", "json:target/cucumber.json" },
    tags = { "@working" }
    )
public class CucumberStarterIT {
}

查看文档http://cukes.info/api/cucumber/jvm/javadoc/cucumber/api/junit/Cucumber.Options.html它指定了String[]类型的选项,因此如果您不给它一个单值列表,它可能不会“很好”工作。试试胶水={"directory_b"},看看会发生什么。

 类似资料:
  • 我使用-dcucumber.options运行test by mvn命令行,以重写prject的选项: 但显示错误:

  • 我使用< code>Cucumber和< code>Guice作为DI。我遇到了以下问题:我有一个步骤,即 我让这个类作为测试运行它 有一个 由我的使用,我定义了cucumber.properties,我定义了还有一个包含方案的功能文件。现在一切都在工作。 不,我想使用其他MyService实现运行MyStep步骤(当然我不会重复MyStep的代码)我定义了一个具有新场景和新测试类的新功能文件 现

  • 这是错误的完整轨迹: 这是我的cucumberRunner文件

  • 24.9 选择技术时的注意事项 这里提到的每种技术都有它的缺点。你在选择一种技术时,应该仔细考虑你的需要和所暴露的服务及你在远程访问时传送的对象。 当使用RMI时,通过HTTP协议访问对象是不可能的,除非你正在HTTP通道传输RMI流量。RMI是一种重量级协议,因为它支持整个对象的序列化,当要求网络上传输复杂数据结构时这是非常重要的。然而,RMI-JRMP与Java客户端相关:它是一种Java-t

  • 我正在为测试自动化创建一个黄瓜框架。我面临的问题是无法解决测试运行程序类中CucumberOptions的导入 最初,我尝试使用导入cucumber.api的建议,但现在已不推荐使用。然后我去了官方的黄瓜网站,寻找进口,但他们并没有解决问题,以及。 不推荐使用的导入: 我想知道有没有新的依赖需要添加。我记得在cucumber.api被弃用之前,我曾在cucumber上做过工作,它曾经工作得很好。

  • 我希望,如果我选择“mammals”,动物选择选项只显示值为1的选项data-animal_class。 我知道如何获得哺乳动物值,但我不知道如何使用过滤器 这是我的代码: