繁体   English   中英

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

[英]Is there a way to run regular jUnit tests with my Cucumber test runner?

我有一个使用Maven设置的Java项目,正在同时使用Cucumber和jUnit进行测试。

也许我错过了一些东西,但是有没有办法设置我的Cucumber测试运行程序以自动运行jUnit测试以及我的黄瓜功能? 不必运行两个单独的测试套件,并使用mvn test自动测试所有内容,将是很好的选择。

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

这是我的测试文件结构:

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

还有我的测试运行程序,当前仅查找.feature文件。

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 {
}

我一直在搜索无济于事,因此将不胜感激。 谢谢!

那Becca呢?

从黄瓜官方文档:

JUnit运行器

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

package mypackage;

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

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

您可以使用IDE或构建工具(例如mvn test),以与运行其他JUnit测试相同的方式运行此测试。

另外,这可能对您有用:

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

在这里,我正在做完全相同的事情,黄瓜运行Junit并只需单击我们的Jenkins工作即可生成结果,xml Junit报告和html Cucumber报告...

如果您想同时将测试作为JUnit测试运行,则不能将Junit批注与Cucumber批注结合使用。 但是您可以轻松地将这两个类分开,然后以“ mvn test”目标运行这两个类。

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

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

清楚吗? :)也许您的需求有所不同?

这听起来像是对我的误解。

JUnit测试使用JUnit编写,并将驻留在Java类中。 如果名称格式正确,则它们将由Maven执行,以便Maven测试运行程序将其提取。

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

因此,所有测试类都将被拾取并执行。 其中之一将尝试运行您的Cucumber方案。

毫无疑问,您在同一项目中有许多测试类。 即使在同一包装中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM