我在测试/功能的给定
block 中有这些行:
log.debug( "subdir1 |$subdir1| class ${subdir1.class}")
File.createTempFile( 'blub', 'odt', subdir1 )
日志消息是:
2020-01-30 08:34:47,433 - 1404 ms [Test worker] DEBUG core.IndexCreationSpec [core.IndexCreationSpec] $spock_feature_1_26:706
subdir1 |/tmp/junit8540540913300320698/subdir1| class class java.io.File
但是我在 createTempFile
行上遇到以下 Spock 失败:
groovy.lang.MissingMethodException: No signature of method: static java.io.File.createTempFile() is applicable for argument types: (String, String, File) values: [blub, odt, /tmp/junit8540540913300320698/subdir1] Possible solutions: createTempFile(java.lang.String, java.lang.String, java.io.File), createTempFile(java.lang.String, java.lang.String), createNewFile(), createTempDir(), createTempDir(java.lang.String, java.lang.String)
这种File
方法不是我经常使用的方法。有一些解决方法可以创建具有临时文件名的文件。但我只是对 Spock 的失败感到困惑。这是 Spock 故障吗(即我应该提交错误报告)吗?
更新:字符串类分析
def blub = 'blub'
log.debug( "blub |$blub| class ${blub.class} class2 ${'blub'.class}")
2020-01-30 09:52:34,187 - 1375 ms [Test worker] DEBUG core.IndexCreationSpec [core.IndexCreationSpec] $spock_feature_1_26:709
blub |blub| class class java.lang.String class2 class java.lang.String
最佳答案
找到答案了。这非常奇怪,而且毫无疑问发生的可能性是千分之一。但可能会对某人有帮助,所以我建议不要删除这个问题。
不知何故一个神秘的 Unicode 字符,u200B
,“零宽度空间”已在 File.createTempFile
之间滑动。和(
。
删除这个解决了问题!看来这被认为是我试图调用的方法的一部分。如果我更加注意 Groovy 格式(Eclipse,请参阅我的答案 here ),我会注意到它带有下划线(=“无法识别的方法”),而它本应是无下划线和斜体的(=“识别的静态方法”) ”)。
关于java - File.createTempFile() 出现意外的 Spock MissingMethodException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59981975/