You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TestNG测试在IntelliJ正常运行,Maven命令行执行无测试运行且报错

我来帮你排查这个问题,从你给出的信息来看,主要有两个核心问题:没有测试用例被执行,以及目录创建失败,还有一个log4j的警告,咱们一个个解决:

你的运行错误信息

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running TestSuite
Configuring TestNG with: org.apache.maven.surefire.testng.conf.TestNG652Configurator@34c4973
log4j:WARN No appenders could be found for logger (org.apache.commons.beanutils.converters.BooleanConverter).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
2020-06-29 17:32:49 [ERROR]failed to create 'BaseTest-531000' directory
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.99 sec
Results :
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0

你的POM.xml配置

<modelVersion>4.0.0</modelVersion>
<groupId>com.takeaway.automation</groupId>
<artifactId>takeaway-project</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<java.version>1.8</java.version>
<testng.version>7.1.0</testng.version>
<awaitility.version>3.0.0</awaitility.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.testng/testng -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>${testng.version}</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.12</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-configuration2 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-configuration2</artifactId>
<version>2.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-lang/commons-lang -->
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.8</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.dataformat/jackson-dataformat-yaml -->
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>2.10.3</version>
</dependency>
</dependencies>
</project>

1. 解决测试用例不执行的问题

你当前的POM里没有配置maven-surefire-plugin,Maven默认的Surefire版本和你用的TestNG 7.1.0不兼容,导致无法识别测试类。

需要在<build><plugins>里添加这个插件,指定匹配的版本:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>3.0.0-M5</version> <!-- 该版本完美兼容TestNG 7.x -->
    <configuration>
        <!-- 匹配你的HTTPTester.java命名规则,如果是*Test.java可以不用配置 -->
        <includes>
            <include>**/*Tester.java</include>
        </includes>
    </configuration>
    <dependencies>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>${testng.version}</version>
        </dependency>
    </dependencies>
</plugin>

另外确认你的HTTPTester.java类是public的,并且测试方法上有@Test注解,这样Surefire才能识别到测试用例。

2. 解决目录创建失败的问题

错误里的failed to create 'BaseTest-531000' directory,应该是你的测试基类(BaseTest)里有创建目录的逻辑,但Maven运行时的工作目录和IntelliJ不同,或者当前用户没有写入权限。

可以做这几个调整:

  • 在测试代码里基于项目根目录生成路径,避免相对路径问题:
    String projectRoot = System.getProperty("user.dir");
    File dir = new File(projectRoot + "/target/test-output/BaseTest-531000");
    dir.mkdirs(); // 用mkdirs()替代mkdir(),自动创建多级目录
    
  • 确保你是在项目根目录下执行mvn test命令
  • 检查目标目录的写入权限,确保当前用户可以创建目录

3. 解决Log4j警告问题

这个警告是因为缺少Log4j配置文件,只需要在src/test/resources目录下创建一个log4j.properties文件,示例内容:

log4j.rootLogger=INFO, console

log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

这样就能消除警告,同时让Log4j正常输出日志了。

内容的提问来源于stack exchange,提问作者kim el

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 09:57:31