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

手动运行Cucumber JVM测试

殷安顺
2023-03-14

我有一个特殊的情况。基本上我有一个单元测试,用@Test注释,在这个测试中我需要执行一个Cucumber JVM测试类。

为什么?说来话长。与类加载器和RoboGuice有关,这不是很重要,但它确实限制了我能做什么和不能做什么。

以下是测试方法:

@Test
public void runCucumberFeature() throws Exception {
    Cucumber cucumber = new Cucumber(MyCucumberTest.class);
    cucumber.run(new RunNotifier());
}

MyCucumberTest是我创建的一个类,并注释如下:

//@RunWith(Cucumber.class)
@Cucumber.Options(format = {"pretty", "html:target/cucumber"}, strict=true)
public class MyCucumberTest {
    // Empty, as required by Cucumber JVM
}

为什么我要注释掉@RunBy注释?因为如果我不这样做,Cucumber测试运行程序会拿起测试并运行它,这是我不想要的,因为我正在手动运行测试。

问题是上述方法不起作用。看起来Cucumber正在查找功能文件,它正在验证MyCucumberTest是否包含@Givens等,它甚至打印出测试,就好像它正在运行它一样。

但事实并非如此。@Given、@When和@Then方法内部未执行任何代码。我不确定为什么会这样,但我有一个模糊的想法,Cucumber JVM测试运行程序不想执行代码,因为该类没有用@RunWith进行注释。

有人能帮忙吗?

共有1个答案

隆芷阳
2023-03-14

我不能提供你想要的解决方案,但是....

…您是否考虑过对要手动运行的测试进行标记(例如使用@Manual)?

然后,您可以通过在Cucumber JVM调用中添加--tags~@manual来取消对@RunWithannotation的注释,并排除手动测试。

在手动JUnit调用中,您可以添加< code> - tags @Manual

 类似资料:
  • 我需要从maven运行一系列测试。测试通过一系列自定义创建的脚本运行,这些脚本运行类似于qunit的东西,输出junit风格的xml文件,然后复制到target/surefire reports目录中。我想做的是让surefire插件打印我自己运行的测试结果。目前,surefire报告没有运行任何测试(正确,因为它实际上没有运行测试)。 我希望surefire能够找到由我的测试系统创建的junit

  • 我无法在我的功能中运行空手道测试 不知道我错过了什么。对于api自动化世界来说是非常新的。非常感谢任何帮助。

  • 第一次使用cron作业,我在linux上相对较新,我似乎无法让它工作,如果我只是在命令行中手动运行它,它工作得很好,但不是作为cron作业。 我是这样设置的: 合同-e 插入模式 */3****root(cd/home/ec2 user/;java-jar-feedPuller-1.jar)(每3分钟测试一次) 保存并退出 它说它已经创建了一个新的cron作业选项卡 现在,当我做crontab-l

  • 主要内容:手动测试的类型,如何进行手动测试,手动测试的优点,手动测试的缺点,手动测试工具手动测试是一种软件测试过程,需要手动执行测试用例而不是使用自动化工具。测试人员根据最终用户的角度手动执行所有测试用例。它确保应用程序是否正如需求文档中所述那样工作。计划和实施测试用例以完成几乎100%的软件应用程序。测试用例报告也是手动生成的。 手动测试是最基本的测试过程之一,因为它可以找到软件的可见和隐藏缺陷。由软件给出的预期输出和输出之间的差异被定义为缺陷。开发人员修复了缺陷并将其交给测试人员

  • 我有一个巨大的剧本,里面有多个剧本。它看起来像这样: 有时,当我运行它时,它会失败。我似乎无法从一个特定的位置开始。 我正在尝试从开始。我尝试做: 但没有任何工作。 我不能直接运行剧本,因为如本线程开头的示例所示,变量在全局剧本中。当我在每个剧本中都有变量时,它不起作用。他们也没有定义主机。 我知道我可以使用,所以它会问我运行哪个任务,但它只是运行了太多的剧本。更不用说,因为我正在使用,它不会告诉

  • 我编写了两个功能文件,每个功能文件打开不同的浏览器URL,例如一个是open google。com和secnd一个开放的亚马逊。但事实并非如此。 两个浏览器都打开了谷歌。通用域名格式。此外,它不能与浏览器交互,任何编码到浏览器的操作都不会执行。此外,关闭第一个浏览器会导致第二个浏览器出现空指针异常。 cucumber版本6我从AbstractCucumberTesNG继承开始。然后我创建登录。功能