gpt4 book ai didi

gradle - Spock 为预期 : and where: blocks 内的 Gradle 任务方法提供临时文件

转载 作者:行者123 更新时间:2023-12-04 21:56:19 27 4
gpt4 key购买 nike

我想使用 Spock 的数据驱动测试。

我的任务有一个带有要处理的 File 参数的方法。结果是一个包含已处理行的 Array。如果没有任何有效的处理提到的数组将具有 0 大小。我使用 JUnit 规则创建临时文件夹,我怀疑这是问题所在。

我该如何解决这个问题?

class H2JSpec extends Specification {

@Rule
TemporaryFolder temporaryFolder
@Shared
private ArrayList<File> tempFiles = []

def "let's build the mappings for template"() {
setup:
Project project = ProjectBuilder.builder().build()
H2JTask task = project.task('h2j', type: H2JTask)

def inputs = ["""#dsfs

""",
"""#this file defines the mapping of h files declarations into java errorcodes: autoenum=off prefix=ec_ class=test.framework.base.MsgErrorCodes
"""]

tempFiles.add(temporaryFolder.newFile('1.txt'))
tempFiles.add(temporaryFolder.newFile('2.txt'))

tempFiles[0].withWriter { it << inputs[0] }
tempFiles[1].withWriter { it << inputs[1] }

expect:
task.prepareCommandList(a).size() == b

where:
a || b
tempFiles[0] || 0
tempFiles[1] || 1

}
}

结果是 java.io.FileNotFoundException

最佳答案

老实说,我完全不使用 Rule 并按以下方式重写测试:

@Grab(group='org.spockframework', module='spock-core', version='1.0-groovy-2.4')

import spock.lang.*

class H2JSpec extends Specification {

def "let's build the mappings for template"() {
setup:
def task = new A()

when:
def f = File.createTempFile('aaa', 'bbb')
f.write(a)

then:
task.prepareCommandList(f).size() == b

where:

a || b
"""#dsfs

""" || 3
"""#this file defines the mapping of h files declarations into java errorcodes: autoenum=off prefix=ec_ class=test.framework.base.MsgErrorCodes
""" || 2

}
}

class A {
List<String> prepareCommandList(File f) {
f.readLines()
}
}

关于gradle - Spock 为预期 : and where: blocks 内的 Gradle 任务方法提供临时文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33648231/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com