我尝试使用TempDir注释运行一些编年史队列junit测试,但是测试失败了,因为编年史队列在junit清理临时目录之前没有释放文件,这会导致测试失败。
我的临时解决方案是在测试结束之前只使用Thread.sleep(1000),但我不希望这样做。这似乎也只是windows上的一个问题。
@TempDir
File temporaryDir;
@Test
public void testCQ() throws Exception {
ChronicleQueue cq = ChronicleQueue.singleBuilder(temporaryDir.getPath())
.wireType(WireType.BINARY_LIGHT)
.blockSize(128)
.bufferCapacity(128L)
.build();
try(final DocumentContext dc = cq.acquireAppender().writingDocument()) {
final Wire wire = dc.wire();
wire.write("test").text("test");
}
cq.close();
Thread.sleep(1000)
}"java.io.IOException:删除临时目录失败。无法删除以下路径(有关详细信息,请参阅禁止的异常):,20191106.cq4,metadata.cq4t“
“该进程无法访问该文件,因为另一个进程正在使用该文件。”
发布于 2020-03-13 18:58:45
这是因为我们在单独的线程中清理资源。我认为这不应该花太长时间--我建议你试着做几个Thread.yield(),以提示清理线程是时候做一些工作了。
https://stackoverflow.com/questions/58733295
复制相似问题