如何创建多个测试套件,如cucumber-jvm / examples / java-calculator-testng

时间:2014-06-18 22:11:28

标签: cucumber testng cucumber-jvm

我克隆了cucumber-jvm项目并运行了java-calculator-testng示例。生成的testNg报告显示两个测试套件。

第一个套件名为“cucumber.examples.java.calculator.RunCukesTest”,包含一个名为“run_cukes”的测试。

第二个套件名为“cucumber.examples.java.calculator.RunCukesByCompositionTest”,并包含一个名为“runCukes”的测试。

我想在我自己的项目中复制它。我的意思是我想要一个显示两个测试套件的testNg报告。一个继承自AbstractTestNGCucumberTests的测试套件和另一个没有的测试套件。

我使用与java-calculator-testng示例相同的依赖关系和文件结构创建了我的项目。我也把我的类放在像java-calculator-example这样的包中。

问题是我的testNg报告只显示一个名为“命令行套件”的测试套件,其中包含一个名为“命令行测试”的测试,该测试包含两个类。

为什么我的测试类合并到同一个测试套件而不是像示例那样的单独套件?

另外,为什么我的测试套件名为“命令行套件”

以下是我尝试复制java-calculator-testng示例的方法:

RunCukesTest.java

// RunCukesTest.java
import cucumber.api.CucumberOptions;
import cucumber.api.testng.AbstractTestNGCucumberTests;
@CucumberOptions(format = "json:target/cucumber-report.json")
public class RunCukesTest extends AbstractTestNGCucumberTests {
}

RunCukesByCompositionTest.java

// RunCukesByCompositionTest.java
import cucumber.api.CucumberOptions;
import cucumber.api.testng.TestNGCucumberRunner;
import org.testng.annotations.Test;
@CucumberOptions(format = "json:target/cucumber-report-composite.json")
public class RunCukesByCompositionTest extends RunCukesByCompositionBase {

    @Test(groups = "examples-testng", description = "Example of using TestNGCucumberRunner to invoke Cucumber")
    public void runCukes() {
        new TestNGCucumberRunner(getClass()).runCukes();
    }
}

RunCukesByCompositionBase.java

// RunCukesByCompositionBase
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;

class RunCukesByCompositionBase {

    @BeforeClass
    public void beforeClass() {
        // do expensive setup
        System.out.println("[Base] @BeforeClass");
    }

    @BeforeMethod
    public void beforeMethod() {
        // do expensive setup
        System.out.println("[Base] @BeforeMethod");
    }
}

1 个答案:

答案 0 :(得分:0)

我想出了如何在一个testNg报告中创建两个测试套件。我仍然不确定java-calculator-testng示例如何实现这一点,但我将分享我学到的内容,以防它可以帮助其他人。

测试套件在pom.xml文件的surefire插件中配置。

<configuration>      
   <suiteXmlFiles>
       <suiteXmlFile>src/test/resources/testng.xml</suiteXmlFile>
       <suiteXmlFile>src/test/resources/testsuitetwo.xml</suiteXmlFile>
   </suiteXmlFiles>
<configuration>

在测试套件xml文件中,您可以指定套件名称和测试名称。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Test Suite 1" verbose="1" configfailurepolicy="continue" >
    <test name="FooTest 1.a">
        <classes>
            <class name="com.turkeysandwitch.testsuites.RunCukesTest" />
        </classes>
    </test>
    <test name="FooTest 1.b" >
        <classes>
            <class name="com.turkeysandwitch.testsuites.RunCukesByCompositionTest"/>
        </classes>
    </test>
</suite>