小编Pau*_* R.的帖子

Maven Build 在 Surefire 测试之间挂起

由于没有明显的原因,并且没有对代码进行任何相关更改,我的数据库万无一失的测试在特定测试后挂起。控制台输出表明测试 50 成功完成,测试 51 尚未开始

[INFO] Running xxxx.server.db.dao.Test50
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.954 s - in xxxx.server.db.dao.Test50
Run Code Online (Sandbox Code Playgroud)

我已经运行以下命令来检索下面的线程转储

mvndebug -DforkCount=0 clean install
Run Code Online (Sandbox Code Playgroud)

以下也不起作用,并在测试运行的同一点导致相同的行为

mvn clean install
Run Code Online (Sandbox Code Playgroud)

测试正在使用 maven 3.3.9 的带有 MySQL 5.7 服务器的 Windows 10 上运行。我试过使用不同版本的 Maven 没有成功。此外,我尝试了不同版本的surefire插件和不同的fork设置,唯一可行的组合如下

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.21.0</version>
            <configuration>
                <forkMode>always</forkMode>
                <forkCount>1</forkCount>
                <reuseForks>true</reuseForks>
                <threadCount>1</threadCount>
                <parallel>suites</parallel>
            </configuration>
        </plugin>
Run Code Online (Sandbox Code Playgroud)

挂起时的线程转储状态如下:

    "main@1" prio=5 tid=0x1 nid=NA waiting
    java.lang.Thread.State: WAITING
    at sun.misc.Unsafe.park(Unsafe.java:-1)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
    at java.util.concurrent.FutureTask.awaitDone(FutureTask.java:429)
    at java.util.concurrent.FutureTask.get(FutureTask.java:191)
    at org.apache.maven.plugin.surefire.booterclient.ForkStarter.awaitResultsDone(ForkStarter.java:460)
    at org.apache.maven.plugin.surefire.booterclient.ForkStarter.runSuitesForkPerTestSet(ForkStarter.java:441)
    at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:293) …
Run Code Online (Sandbox Code Playgroud)

java mysql maven maven-surefire-plugin

6
推荐指数
1
解决办法
1600
查看次数

标签 统计

java ×1

maven ×1

maven-surefire-plugin ×1

mysql ×1