运行 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
重命名为与默认模式匹配的名称(即 ITTestServerConfigurator
、TestServerConfiguratorIT
或 TestServerConfiguratorITCase
)或定义您自己的包含模式:
<configuration>
<includes>
<include>**/*IT.java</include>
<include>**/*Configurator.java</include>
</includes>
<groups>http</groups>
</configuration>
遇到了同样的问题。
将 @Test(groups = "http")
添加到您的 TestServerConfigurator
class
尝试根据您的系统浏览器更新 ChromeDriver
版本。
我看到标有“@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
重命名为与默认模式匹配的名称(即 ITTestServerConfigurator
、TestServerConfiguratorIT
或 TestServerConfiguratorITCase
)或定义您自己的包含模式:
<configuration>
<includes>
<include>**/*IT.java</include>
<include>**/*Configurator.java</include>
</includes>
<groups>http</groups>
</configuration>
遇到了同样的问题。
将 @Test(groups = "http")
添加到您的 TestServerConfigurator
class
尝试根据您的系统浏览器更新 ChromeDriver
版本。