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

有没有办法用我的Cucumber测试运行程序运行常规jUnit测试?

钱睿范
2023-03-14

我有一个用Maven建立的Java项目,我正在用Cucumber和jUnit进行测试。

也许我遗漏了一些东西,但是有没有一种方法可以设置Cucumber测试运行程序来自动运行jUnit测试以及Cucumber特性?不必运行两个单独的测试套件,并使用mvn test自动测试所有内容,这将是一件非常棒的事情。

目前,当我指定@RunWith(Cucumber.class)时,它只查找。功能文件并忽略所有其他测试。

以下是我的测试文件结构:

    └── test
        ├── java
        │   ├── TestRunner.java
        │   └── com
        │       └── myname
        │           └── server
        │               ├── GlobalHooks.java
        │               ├── HTTPRequestsSteps.java
        │               └── unitTests
        │                   ├── RequestHandlerTests.java
        │                   └── ServerTests.java
        └── resources
            └── cucumber
                ├── ... cucumber features here

还有我的测试运行程序,它目前只查找。功能文件。

import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
import org.junit.Test;
import org.junit.runner.RunWith;

import static org.junit.Assert.assertEquals;

@RunWith(Cucumber.class)
@CucumberOptions(plugin={"pretty"}, glue="com.rnelson.server", features="src/test/resources")

public class TestRunner {
}

我一直在寻找,但没有任何结果,因此,任何帮助都将不胜感激。谢谢

共有2个答案

庞鸿骞
2023-03-14

对我来说,这听起来像是个误会。

JUnit测试是使用JUnit编写的,将驻留在java类中。如果名称的格式正确,那么它们将由Maven执行,以便Maven测试运行程序能够获取该名称。

一个JUnit类用@RunAnd(Cucumber.class)注释。它是一个运行Cucumber的JUnit类。这只是另一个Java的类,但是这个类搜索。特性文件并试图执行它找到的文件。它的特殊之处还在于,它不允许您在其中定义任何方法。除此之外,它是一个常规的JUnit类,将与任何其他JUnit类同时执行。

因此,所有测试类都将被拾取并执行。其中一个将尝试运行你的cucumber场景。

在同一个项目中有许多测试类,这并不矛盾。即使是在同一个包裹里。

孟财
2023-03-14

这个怎么样,贝卡:

来自cucumber官方文件:

少年赛跑运动员

JUnit运行程序使用JUnit框架来运行Cucumber。您只需要一个带有注释的空类:

package mypackage;

import cucumber.api.junit.Cucumber;
import org.junit.runner.RunWith;

@RunWith(Cucumber.class)
public class RunCukesTest {
}

您可以像运行其他JUnit测试一样运行这个测试,使用您的IDE或构建工具(例如mvn测试)。

这也可能对你有用:

http://www.hascode.com/2014/12/bdd-testing-with-cucumber-java-and-junit/

在这里,我正在做完全相同的事情,cucumber运行JUnit,并将产生两个结果,xml JUnit报告和htmlcucumber报告,只需点击我们的詹金斯工作...

如果您的意思是希望以JUnit测试的形式运行测试,那么就不能将JUnit注释与Cucumber注释结合起来。但是您可以轻松地将这两个类分开,然后以“mvn测试”的目标运行这两个类。。

最后一件事,我认为这是最后的解决方案,但它应该工作,你也可以直接调用JUnit测试从代码,但它将是一个非常肮脏和没有标准的解决方案

JUnitCore junit = new JUnitCore();
Result result = junit.run(testClasses);

清楚吗?:)或者你需要的是不同的?

 类似资料:
  • 尝试在maven中重新访问Junit 5平台(5.3.2)下运行Junit 5/4集成测试。从如何使用maven failsafe插件并行运行JUnit 4和JUnit 5测试 在surefire插件2.22.1下运行单元测试可以并行和混合测试JUnit 5和JUnit 4,并在详细信息中查看工作线程。 在故障安全2.22.1中尝试了同样的方法,但是需要日志时间,并且似乎没有并行执行。而且只有[m

  • 使用: cucumber芯-1.2.4 cucumber-java-1.2.4 cucumber-junit-1.2.4 Junit-4.12 Eclipse Mars.1 Java 8

  • Cucumber测试没有并行运行(Cucumber jvm并行插件)? 如果我使用runner类执行测试,一次将执行一个功能文件,但是当将以下插件添加到POM文件时,似乎没有功能文件执行? 即使我指向了正确的功能文件文件夹? 我的POM文件:

  • 我正在尝试使用IntelliJ Community edition和Gradle5.5.1运行一个Cucumber/Selenium项目。 我的TestRunner类如下:

  • 我昨晚睡觉时所有的测试都出现了,今天重新加载了项目,无论我怎么尝试,VS测试运行程序都没有得到任何东西。 昨天,当我加载项目时,我遇到了类似的问题,但通过添加对Microsoft.DotNet.内部成就的引用来解决它 - 正如这篇文章所建议的那样:链接。但是,即使有参考文献,它现在也在做同样的事情。我现在也尝试了帖子中的几乎所有答案,但无济于事。 我已经与一个基本的控制台项目进行了比较,除了包含的

  • 从很久以前的某个版本开始(大约是1.b.35版),Nutz 就偷偷的加入了 maven 的 pom.xml 文件, 极好的解决了测试时需要依赖其他 jar 包的问题,接下来就让我们使用 Maven 来进行 JUnit 测试吧。 Nutz 在 Github 的 地址为 https://github.com/nutzam/nutz(Git@OSC镜像 https://git.oschina.net/n