java单元测试 规范,java – 在spock单元测试规范中传递实际参数

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) {

...

}

因此,在我的测试规范中,我想将keystore文件作为inputStream传递,其中实际的密钥库位于此处../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

}

}

非常感谢任何建议,

解决方法:

我认为where部分只接受静态或共享字段.否则值必须是硬编码的文字.因此,当我修改类以使参数共享时,它对我有效.请试试这个

import spock.lang.Shared

import spock.lang.Specification

class SnapClientTest extends Specification {

@Shared def inputStream = new FileInputStream("../resources/keystore.bks")

@Shared def keystorePwd = "password".toCharArray()

@Shared def url = "https://example_webservice.com"

def "Connect to https web service"() {

setup:

def snapzClient = new SnapzClient();

expect:

snapzClient.makeRequest(A, B, C) == RESULT

where:

A | B | C | RESULT

inputStream | keystorePwd | url | "0"

}

}

请注意,makeRequest()方法的返回类型是string.所以如果你需要用双引号括起RESULT(“)

标签:java,unit-testing,groovy,spock

来源: https://codeday.me/bug/20190528/1173466.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值