重命名自:LocationAwareException - org.gradle.tooling.ResultHandler 接收错误通知但测试过程正在运行
我正在使用 Gradle 工具 API 通过 Java Spring Boot 服务启动测试。我正在使用带有 Spring Framework ThreadPoolTaskScheduler 的 ScheduledFutures 来排队测试并在 Runnable 类中一次运行其中的 X 个。一切似乎都运行良好。
基本上在我的 Runnable 类中,我执行以下操作:
ProjectConnection connection = GradleConnector.newConnector()
.forProjectDirectory(new File(workingDir))
.connect();
...
TestLauncher tl = connection.newTestLauncher();
...
tl.withJvmTestClasses(testClass);
...
TestResultHandler handler = new TestResultHandler();
tl.run(handler);
...
connection.close();
我的 TestResultHandler 只是在 onFailure 中转储信息:
import org.gradle.tooling.GradleConnectionException;
import org.gradle.tooling.ResultHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class TestResultHandler implements ResultHandler<Object> {
private static final Logger logger = LoggerFactory.getLogger(TestResultHandler.class);
@Override
public void onFailure(GradleConnectionException e) {
logger.info("toString:");
logger.info(e.toString());
logger.info("getCause:");
logger.info(e.getCause().toString());
logger.info("getStackTrace:");
for (StackTraceElement elem : e.getStackTrace())
logger.info(elem.toString());
}
}
我的测试似乎确实有效,我正在收集结果,但我从 TestResultHandler 中看到了这样的东西:
toString:
org.gradle.tooling.BuildException: Could not execute tests using connection to Gradle distribution 'https://services.gradle.org/distributions/gradle-6.8-bin.zip'.
getCause:
org.gradle.internal.exceptions.LocationAwareException: Execution failed for task ':test'.
getStackTrace:
org.gradle.tooling.internal.consumer.ExceptionTransformer.transform(ExceptionTransformer.java:51)
org.gradle.tooling.internal.consumer.ExceptionTransformer.transform(ExceptionTransformer.java:29)
org.gradle.tooling.internal.consumer.ResultHandlerAdapter.onFailure(ResultHandlerAdapter.java:43)
org.gradle.tooling.internal.consumer.async.DefaultAsyncConsumerActionExecutor$1$1.run(DefaultAsyncConsumerActionExecutor.java:69)
org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
java.lang.Thread.run(Thread.java:748)
有谁知道这意味着什么,我是否应该担心?
编辑:这是来自 e.printStackTrace() 的示例输出。谢谢,@ToYonos
Caused by: org.gradle.api.GradleException: Could not write XML test results for us.xxx.yyy.MiscTest to file /home/gradle/src/build/test-results/test/20210218-15_48_20_126/TEST-us.xxx.yyy.MiscTest.xml.
at org.gradle.api.internal.tasks.testing.junit.result.Binary2JUnitXmlReportGenerator$JUnitXmlReportFileGenerator.run(Binary2JUnitXmlReportGenerator.java:125)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$QueueWorker.execute(DefaultBuildOperationExecutor.java:199)
at org.gradle.internal.operations.DefaultBuildOperationQueue$WorkerRunnable.runOperation(DefaultBuildOperationQueue.java:241)
at org.gradle.internal.operations.DefaultBuildOperationQueue$WorkerRunnable.doRunBatch(DefaultBuildOperationQueue.java:222)
at org.gradle.internal.operations.DefaultBuildOperationQueue$WorkerRunnable.lambda$runBatch$0(DefaultBuildOperationQueue.java:212)
at org.gradle.internal.resources.AbstractResourceLockRegistry.whileDisallowingLockChanges(AbstractResourceLockRegistry.java:70)
at org.gradle.internal.work.DefaultWorkerLeaseService.whileDisallowingProjectLockChanges(DefaultWorkerLeaseService.java:185)
at org.gradle.internal.operations.DefaultBuildOperationQueue$WorkerRunnable.lambda$runBatch$1(DefaultBuildOperationQueue.java:212)
at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:213)
at org.gradle.internal.operations.DefaultBuildOperationQueue$WorkerRunnable.runBatch(DefaultBuildOperationQueue.java:200)
at org.gradle.internal.operations.DefaultBuildOperationQueue$WorkerRunnable.run(DefaultBuildOperationQueue.java:172)
... 3 more
Caused by: org.gradle.api.UncheckedIOException: java.io.EOFException
at org.gradle.api.internal.tasks.testing.junit.result.TestOutputStore$Reader.doRead(TestOutputStore.java:389)
at org.gradle.api.internal.tasks.testing.junit.result.TestOutputStore$Reader.writeAllOutput(TestOutputStore.java:314)
at org.gradle.api.internal.tasks.testing.junit.result.InMemoryTestResultsProvider$3.execute(InMemoryTestResultsProvider.java:61)
at org.gradle.api.internal.tasks.testing.junit.result.InMemoryTestResultsProvider$3.execute(InMemoryTestResultsProvider.java:58)
at org.gradle.api.internal.tasks.testing.junit.result.TestOutputStoreBackedResultsProvider.withReader(TestOutputStoreBackedResultsProvider.java:36)
at org.gradle.api.internal.tasks.testing.junit.result.InMemoryTestResultsProvider.writeAllOutput(InMemoryTestResultsProvider.java:58)
at org.gradle.api.internal.tasks.testing.junit.result.JUnitXmlResultWriter.writeOutputs(JUnitXmlResultWriter.java:94)
at org.gradle.api.internal.tasks.testing.junit.result.JUnitXmlResultWriter.write(JUnitXmlResultWriter.java:79)
at org.gradle.api.internal.tasks.testing.junit.result.Binary2JUnitXmlReportGenerator$JUnitXmlReportFileGenerator.run(Binary2JUnitXmlReportGenerator.java:122)
... 17 more
Caused by: java.io.EOFException
at org.gradle.internal.serialize.kryo.KryoBackedDecoder.maybeEndOfStream(KryoBackedDecoder.java:74)
at org.gradle.internal.serialize.kryo.KryoBackedDecoder.readBoolean(KryoBackedDecoder.java:138)
at org.gradle.api.internal.tasks.testing.junit.result.TestOutputStore$Reader.doRead(TestOutputStore.java:350)
... 25 more
Caused by: com.esotericsoftware.kryo.KryoException: Buffer underflow.
at com.esotericsoftware.kryo.io.Input.require(Input.java:181)
at com.esotericsoftware.kryo.io.Input.readBoolean(Input.java:783)
at org.gradle.internal.serialize.kryo.KryoBackedDecoder.readBoolean(KryoBackedDecoder.java:136)
... 26 more
这实际上有点截断。它太大了,无法包含所有内容,但我认为最重要的部分在这里。
编辑2:
这里的房间用完了...继续响应 1,这并不是真正的问题响应。