我在使用修昔底德运行自动测试时遇到间歇性问题:
结果:WARN无法为写入缩放屏幕截图net.thucydides.core.model.Screenshot@82df887:{}java.io.io异常:无法将完整内容从"target/site/thucydides/2a645999ca0b3b04597680646ce26149_NONE.png"复制到"target/sites/thucydides/scaled_2a645999ca0 b3b04597600646ce26149/png"
我运行的命令如下:mvn-Dit.test=MyTestClass验证
我在@Steps、@StepGroup、@WithTag和@Story注释方面使用了很多修昔底德结构。
当运行多个测试而不仅仅是一个测试时,我似乎会遇到这个错误。
玩修昔底德。keep.unscaled。屏幕截图没有什么区别。
我只在谷歌群组上发现了另一个相关问题,但没有解决方案(截至2014-11-06)。
我的配置设置:
- 操作系统:Mac OSX Yosemite(10.10)(也发生在10.9上)
- mvn:Apache Maven 3.1.1
- Java:1.7.0_51
- 修昔底德:0.9.273(0.9.275也失败)
- 硒:2.42.2-
- 浏览器:FireFox v28(我尝试过27&31相同的问题,Chrome 38,Safari 7.1似乎都显示出类似或相同的问题)
我们非常感谢任何指点。这里的一个相关问题是,如果您在mvn命令行上标记thucydides:aggregate,并且如上所述失败,那么thucydides将不会生成index.html文件。
这似乎是屏幕截图管理的问题。关于为什么会发生这种情况的工作理论(未经修昔底德作者证实)似乎植根于修昔底斯通过重复使用屏幕截图来节省时间和空间的策略。显然,报告引擎会截取一张屏幕截图,进行一些缩放,重新保存文件,等等。如果第二个测试出现了与另一个测试相同的md5屏幕截图,它会尝试重用它。但是,如果由于某种原因该文件不可用(由于锁定或不存在等等),那么你可以看到这个错误。
为了证实这一怀疑,我从这里的说明中提取了修昔底德应用程序的样本:
并复制了其中一个测试(复制测试方法,稍微更改名称)并运行"verify"。果不其然,我能够重现这个问题。