【发布时间】:2014-08-25 12:17:11
【问题描述】:
org.spockframework:spock-core:0.7-groovy-2.0
Gradle 1.12
Groovy 1.8.6
java
你好,
我正在尝试将 spock 与我的 java 应用程序一起使用来运行单元测试并使用 gradle 进行构建。
但是,由于我是 spock 新手,我不确定如何传入实际参数以获得正确的输出?
这是我要测试的函数签名,它接受一个 inputStream、char[] 和一个 String:
public String makeRequest(InputStream keystoreFilename, char[] keystorePassword, String cnn_url) {
...
}
所以在我的测试规范中,我想将密钥库文件作为输入流传递,其中实际密钥库位于此处 ../resources/keystore.bks,以及密钥库的实际密码和 Web 服务所在的 URL是。但是,在尝试运行单元测试时出现此错误:
groovy.lang.MissingMethodException: No signature of method: com.sunsystem.HttpSnapClient.SnapClientTest.FileInputStream()
我的规范测试如下,但我认为我的做法是错误的。
import spock.lang.Specification;
import java.io.InputStream;
import java.io.FileInputStream;
class SnapClientTest extends Specification {
def 'Connect to https web service'() {
setup:
def snapzClient = new SnapzClient();
def inputStream = FileInputStream("../resources/keystore.bks")
def keystorePwd = "password".toCharArray()
def url = "https://example_webservice.com"
expect: 'success when all correct parameters are used'
snapzClient.makeRequest(A, B, C) == RESULT
where:
A | B | C | RESULT
inputStream | keystorePwd | url | 0
}
}
非常感谢您的任何建议,
【问题讨论】:
-
标题目前是“在 spock 单元测试规范中传递实际参数”。这个问题实际上与参数传递没有任何关系。您应该给问题起一个能更好地描述所问内容的标题。
标签: java unit-testing groovy spock