意外的Spock MissingMethodException with File.createTempFile()

问题描述 投票:0回答:1

我在测试/功能的given块中有这些行:

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:没有方法的签名:静态java.io.File.createTempFile()适用于参数类型:(字符串,字符串,文件)值:[blub,odt,/ tmp / junit8540540913300320698 / subdir1]可能的解决方案: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
java testing groovy spock
1个回答
1
投票

找到答案。这是非常奇怪的,而且无疑有千分之一发生的机会。但是可能会对某人有所帮助,所以我建议不要删除该问题。

Somehow一个神秘的Unicode字符u200B,“零宽度空格”已在File.createTempFile(之间滑动。

删除此问题已解决!看来这被认为是我尝试调用的方法的一部分。如果我更加注意Groovy格式(Eclipse,请参见我的回答here),我会注意到,当它应该是非下划线和斜体(=“公认的静态方法”)时,它已带有下划线(=“无法识别的方法”)。 “)。

© www.soinside.com 2019 - 2024. All rights reserved.