0

我试图在我的 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'

可能是什么问题呢?我不能检查类路径之外的文件吗?

4

1 回答 1

0

这实际上是 Citrus 中的一个错误。Citrus 使用文件路径而不是文件对象,并结合 Spring 的 PathMatchingResourcePatternResolver 这导致 Citrus 搜索类路径资源而不是使用绝对文件路径作为外部文件系统资源。

您可以通过提供绝对文件路径而不是像这样的文件对象来解决此问题:

waitFor().file(“file:/esbfiles/blesbt/bl03orders.99160221.14289.xml")
         .seconds(65L)
         .interval(1000L); 

有关损坏文件对象转换的问题已打开:https ://github.com/christophd/citrus/issues/303

感谢您指出它!

于 2017-11-03T08:16:33.037 回答