我试图通过testng运行简单的Cucumber/Java测试。xml。
所以,我有testng。xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Cucumber Framework">
<test name="Cucumber Tests" junit="true">
<classes>
<class name="CucumberFramework.runner.MainRunner"></class>
</classes>
</test>
</suite>
我用的是runner。类,在其中我将路径/选项/etc设置为功能文件、步骤和报告:
package CucumberFramework.runner;
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
import cucumber.api.testng.AbstractTestNGCucumberTests;
import org.junit.runner.RunWith;
@RunWith(Cucumber.class)
@CucumberOptions (
features = {"src/test/java/CucumberFramework/featureFiles"},
glue = {"CucumberFramework.steps"},
monochrome = true,
tags = {},
plugin = {"pretty",
"html:target/cucumber",
"json:target/cucumber.json",
"com.cucumber.listener.ExtentCucumberFormatter:target/report.html"}
)
public class MainRunner extends AbstractTestNGCucumberTests {
}
但是当我运行testng时。xml作为TestNG套件,它:
1) 通过我自己的设想,
但是
我做错了什么?
需要添加@Test注释才能运行。
带有Cucumber和TestNG的项目不需要具有用@Test
注释的方法的类。
未找到测试
可能与您运行测试的方式有关。
在下面找到一个显示基本需求的最小项目。
假设以下结构
src/test/java/stepdef/StepDefs.java
src/test/java/runner/RunnerTest.java
src/test/resources/features/test.feature
pom.xml
波姆。xml
<?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.suboptimal</groupId>
<artifactId>cuke-testng3</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-testng</artifactId>
<version>3.0.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java</artifactId>
<version>3.0.2</version>
<type>jar</type>
</dependency>
</dependencies>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>
test.feature
Feature: test
Scenario: something to test
Given some step
Then this is expected
StepDefs.java
package stepdef;
import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
public class StepDefs {
@Given("^some step$")
public void someStep() throws Throwable {
System.out.println("execute someStep");
}
@Then("^this is expected$")
public void thisIsExpected() throws Throwable {
System.out.println("execute thisIsExpected");
}
}
RunnerTest。JAVA
package runner;
import cucumber.api.CucumberOptions;
import cucumber.api.testng.AbstractTestNGCucumberTests;
@CucumberOptions(features = "src/test/resources/features", glue = "stepdef")
public class RunnerTest extends AbstractTestNGCucumberTests {
}
测试可以通过Maven执行
mvn clean test
输出
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running runner.RunnerTest
Configuring TestNG with: org.apache.maven.surefire.testng.conf.TestNG652Configurator@5eb5c224
execute someStep
execute thisIsExpected
1 Scenarios (1 passed)
2 Steps (2 passed)
0m0.019s
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.552 sec
正如最后一行所述,测试运行:1
cucumber场景被识别为测试运行。
编辑将Cumber测试作为TestNG套件执行的可能性。
添加到pom.xml
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.0</version>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
</plugins>
</build>
创建文件testng。xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Cucumber Framework" >
<test name="Cucumber Tests">
<classes>
<class name="runner.RunnerTest"></class>
</classes>
</test>
</suite>
使用Maven作为执行测试
mvn clean test
输出
[INFO] -------------------------------------------------------
[INFO] T E S T S
[INFO] -------------------------------------------------------
[INFO] Running TestSuite
execute someStep
execute thisIsExpected
1 Scenarios (1 passed)
2 Steps (2 passed)
0m0.020s
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.614 s - in TestSuite
@SubOptimal-谢谢你如此清晰的解释,现在我知道得更多了。
关于问题本身——最后我通过删除testng中提到的junit解决了它。xml。正如我在描述中提到的“作为testng套件运行”,我应该将这个答案标记为正确,没有冒犯。
我试图用TestNG并行运行一个示例测试项目。但它是在一个线程中顺序执行的。我漏掉什么了吗? 谢了。
我有一个希望通过maven运行的主类,这个主类动态创建testng.xml文件,测试就是这样开始的。但是当我通过'run as->Maven Test'运行我的项目时,我得到了'SureFireExecutionException'。下面是pom.xml: 编辑:在这里为上面的查询打开了一个新问题:无法从maven运行testNG测试
我正在使用TestNG运行自动Selenium测试。当我作为TestNG套件运行时,一切都很好。但是当我作为Maven Test运行时,它们失败了。我非常困惑为什么他们会在一种情况下工作而不是另一种情况下。以下是测试的总体布局: base.java testbase.java
我正在使用CSV reader从获取数据,并在使用DataProvider的测试函数中使用该数据。
在本教程中,我们将演示如何在TestNG中执行超时测试。 “超时”表示如果单元测试花费的时间超过指定的毫秒数,那么TestNG将会中止它并将其标记为失败。 “超时”也可用于性能测试,以确保方法在合理的时间内返回。 创建一个名称为:TimeoutTest 的 Maven 项目,其结构如下所示 - 创建一个测试类:TestTimeout.java,其代码如下 - 执行上面代码,得到以下结果 -
我试图在Eclipse中使用Selenium运行TestNG。 当类文件作为TestNG测试运行时,我得到的测试Run=0。 问题会是什么? 我有testNg插件 testng。xml文件: 类: WebDriverTest类: BrowserInstance类: 注: 当我将testing.xml文件作为TestNG Suite运行时,结果是: 当我运行. java文件作为TestNG测试时,结