简体   繁体   English

Maven Surefire插件未重新运行失败的Cucumber测试

[英]Maven Surefire plugin did not rerun failed Cucumber tests

I am using the Java implementation of Selenium WebDriver ( version 2.53.0 ) to run some automated tests against a web application. 我正在使用Selenium WebDriver2.53.0版 )的Java实现对Web应用程序运行一些自动化测试。 The tests are written in Behaviour Driven Testing format using the Java implementation of Cucumber ( version 1.2.3 ). 使用Cucumber的Java实现( 版本1.2.3 )以行为驱动测试格式编写测试。 I use Maven ( version 3.3.9 ) to import all my dependencies and also to build and run the tests. 我使用Maven版本3.3.9 )导入我的所有依赖关系,并构建和运行测试。 The tests are organised into different categories using Cucumber tags. 使用黄瓜标签将测试分为不同类别。 For example, I can run one category of tests tagged with @JohnnyBravo from the command line using the following commands: 例如,我可以使用以下命令从命令行运行以@JohnnyBravo标记的一类测试:

cd path_to_Maven_POM_file
mvn clean test -Dcucumber.options="--tags @JohnnyBravo"

After doing some research, I found out that you can use the Maven SureFire plugin to rerun failed tests by adding " -Dsurefire.rerunFailingTestsCount=2 " to the Maven command above according to this link . 经过研究,我发现您可以使用Maven SureFire插件根据此链接在上面的Maven命令中添加“ -Dsurefire.rerunFailingTestsCount=2 ”来重新运行失败的测试。 I then tried to rerun that category of tests using the command below while ensuring that some of them will definitely fail so as to see if they will be rerun or not: 然后,我尝试使用下面的命令重新运行该类别的测试,同时确保其中某些测试肯定会失败,以便查看它们是否会重新运行:

mvn clean test -Dcucumber.options="--tags @JohnnyBravo" -Dsurefire.rerunFailingTestsCount=2

Unfortunately, the failed tests did not rerun. 不幸的是,失败的测试没有重新运行。 What am I doing wrong here ? 我在这里做错了什么?

My POM file is shown below: 我的POM文件如下所示:

<?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.company</groupId>
    <artifactId>regression-test</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <properties>
        <cucumber.version>1.2.3</cucumber.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>

        <dependency>
            <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
            <version>2.8.2</version>
        </dependency>

        <dependency>
            <groupId>net.sourceforge.jtds</groupId>
            <artifactId>jtds</artifactId>
            <version>1.3.1</version>
        </dependency>

        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-picocontainer</artifactId>
            <version>${cucumber.version}</version>
        </dependency>
        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-java</artifactId>
            <version>${cucumber.version}</version>
        </dependency>
        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-junit</artifactId>
            <version>${cucumber.version}</version>
        </dependency>
        <dependency>
            <groupId>com.vimalselvam</groupId>
            <artifactId>cucumber-extentsreport</artifactId>
            <version>1.1.0</version>
        </dependency>

        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>2.53.0</version>
        </dependency>

        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>

        <dependency>
            <groupId>com.pojosontheweb</groupId>
            <artifactId>monte-repack</artifactId>
            <version>1.0.1</version>
        </dependency>

    </dependencies>
    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.18.1</version>
                </plugin>
            </plugins>
        </pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.18.1</version>
                <configuration>
                    <systemPropertyVariables>
                        <webdriver.chrome.driver>src/test/resources/chromedriver/chromedriver.exe</webdriver.chrome.driver>
                    </systemPropertyVariables>
                    <!--<testFailureIgnore>true</testFailureIgnore>-->
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

The Cucumber JUnit test runner class is shown below: 黄瓜JUnit测试运行器类如下所示:

import com.cucumber.listener.ExtentCucumberFormatter;
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
import org.junit.BeforeClass;
import org.junit.runner.RunWith;

import java.io.File;
import java.util.HashMap;

@RunWith(Cucumber.class)
@CucumberOptions(
        monochrome = false,
        plugin = {
                "pretty",
                "html:C:/Test_Output_Data/Results/HTML/",
                "json:C:/Test_Output_Data/Results/results.json",
                "com.cucumber.listener.ExtentCucumberFormatter"
        },
        features = {"src/test/resources/"},
        tags = {
                "@JohnnyBravo",
                //"@AgentUI", "@Smoke",
                //"@GenUI", "@Smoke",
                //"@GenUI", "@Regression",
        }
)
public class GeneralRunnerTest {

    @BeforeClass
    public static void setup() {
        ExtentCucumberFormatter.initiateExtentCucumberFormatter();
        ExtentCucumberFormatter.loadConfig(new File("src/test/resources/extent-config.xml"));

        ExtentCucumberFormatter.addSystemInfo("Browser Name", "Firefox");
        ExtentCucumberFormatter.addSystemInfo("Browser version", "46.0.1");
        ExtentCucumberFormatter.addSystemInfo("Selenium version", "2.53.0");

        HashMap<String, String> systemInfo = new HashMap<>();
        systemInfo.put("Cucumber Version", "1.2.3");
        systemInfo.put("Extent Cucumber Reporter Version", "1.1.0");
        ExtentCucumberFormatter.addSystemInfo(systemInfo);
    }
}

Check if you are using the right version for your cucumber dependencies. 检查您使用的黄瓜依赖性版本是否正确。

On the page for this feature on the surefire website , it says surefire网站上有关此功能页面上 ,它说

Since of 2.21.0 the provider surefire-junit47 can rerun scenarios created by cucumber-jvm 2.0.0 and higher. 从2.21.0版本开始,提供程序surefire-junit47可以重新运行cumber-jvm 2.0.0和更高版本创建的方案。

Also check if you're using the same junit provider that they've mentioned. 还要检查您是否使用了他们提到的相同的junit提供程序。 I'm not sure which is the default provider. 我不确定哪个是默认提供程序。

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

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