运行 maven testng 测试时不执行 BeforeGroups 方法

BeforeGroups method is not executed when running testng tests by maven

我看到标有“@BeforeGroups”的方法没有被执行。

Java 测试 class:

import org.testng.annotations.Test;

import static org.testng.Assert.fail;

@Test(groups = "http")
public class MyIT {

    @Test(groups = "http")
    public void method1() {
        System.out.println("test 1 - value from TestServerConfigurator: "
            + TestServerConfigurator.getSomeString());
    }
}

在同一个包中 - class 配置服务器:

public class TestServerConfigurator {
    private static String someString;

    @BeforeGroups(groups = "http")
    public static void init() {
        System.out.println("initializing server...");
        someString = "value set!";
    }

    @AfterGroups(groups = "http")
    public static void after() {
        System.out.println("stopping server...");
    }

    public static String getSomeString() {
        return someString;
    }
}

pom.xml 文件:

<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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.alskor</groupId>
    <artifactId>mytests</artifactId>
    <version>1.0-SNAPSHOT</version>
    <name>mytests</name>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-failsafe-plugin</artifactId>
                <version>2.19.1</version>
                <configuration>
                    <groups>http</groups>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>integration-test</goal>
                            <goal>verify</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.9.10</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

运行:

mvn 集成测试

[INFO] --- maven-failsafe-plugin:2.19.1:integration-test (default) @ mytests ---

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running MyIT
test 1 - value from TestServerConfigurator: null
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.218 sec - in MyIT

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

如果我用这个替换 "configuration" 部分,我发现它有效:

    <configuration>
        <groups>http</groups>
        <includes>
            <include>*</include>
        </includes>
    </configuration>

我认为 "includes" 部分旨在仅列出测试,而不是所有 类 应该对 testng 可见的测试,但显然情况并非如此。

来自 Maven Failsafe Plugin – Inclusions and Exclusions of Tests:

By default, the Failsafe Plugin will automatically include all test classes with the following wildcard patterns:

  • "**/IT*.java" - includes all of its subdirectories and all Java filenames that start with "IT".
  • "**/*IT.java" - includes all of its subdirectories and all Java filenames that end with "IT".
  • "**/*ITCase.java" - includes all of its subdirectories and all Java filenames that end with "ITCase".

由于 TestServerConfigurator class 名称与任何默认包含模式都不匹配,因此它被排除在您的测试之外 运行。

您可以将 TestServerConfigurator 重命名为与默认模式匹配的名称(即 ITTestServerConfiguratorTestServerConfiguratorITTestServerConfiguratorITCase)或定义您自己的包含模式:

            <configuration>
                <includes>
                    <include>**/*IT.java</include>
                    <include>**/*Configurator.java</include>
                </includes>
                <groups>http</groups>
            </configuration>

遇到了同样的问题。 将 @Test(groups = "http") 添加到您的 TestServerConfigurator class

尝试根据您的系统浏览器更新 ChromeDriver 版本。