我正在尝试在我的Citrustest中使用waitFor()等待磁盘上的输出文件由我正在测试的进程写入。我用过这段代码
outputFile = new File “/esbfiles/blesbt/bl03orders.99160221.14289.xml");
waitFor().file(outputFile).seconds(65L).interval(1000L);
几秒钟后,文件会按预期显示在文件夹中。我正在运行测试代码的用户具有读取文件的权限。但是,waitFor()以超时结束。
09:46:44 09:46:44,818 DEBUG dition.FileCondition| Checking file path '/esbfiles/blesbt/bl03orders.99160221.14289.xml'
09:46:44 09:46:44,818 WARN dition.FileCondition| Failed to access file resource 'class path resource [esbfiles/blesbt/bl03orders.99160221.14289.xml] cannot be resolved to URL because it does not exist'
可能是什么问题?我不能检查类路径之外的文件吗?
答案 0 :(得分:0)
这实际上是柑橘中的一个错误。 Citrus正在使用文件路径而不是文件对象,并结合Spring的PathMatchingResourcePatternResolver,这会导致Citrus搜索类路径资源,而不是使用绝对文件路径作为外部文件系统资源。
您可以通过提供绝对文件路径而不是文件对象来解决此问题:
waitFor().file(“file:/esbfiles/blesbt/bl03orders.99160221.14289.xml")
.seconds(65L)
.interval(1000L);
已打开有关已损坏文件对象转换的问题:https://github.com/christophd/citrus/issues/303
感谢您的指点!