Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法对spock中的null对象调用方法leftshift()_Java_Unit Testing_Groovy_Spock - Fatal编程技术网

Java 无法对spock中的null对象调用方法leftshift()

Java 无法对spock中的null对象调用方法leftshift(),java,unit-testing,groovy,spock,Java,Unit Testing,Groovy,Spock,下面的代码是spock测试的基本示例。当我运行它时,它会给出以下错误 无法对空对象调用方法leftshift() 这是为什么?我如何使我的代码工作 另外,leftshift和righshift在spock中的具体用途是什么 import spock.lang.*; class Publisher { List <Subscriber> subscribers void send (String message){} } interface S

下面的代码是spock测试的基本示例。当我运行它时,它会给出以下错误

无法对空对象调用方法leftshift()

这是为什么?我如何使我的代码工作

另外,
leftshift
righshift
在spock中的具体用途是什么

import spock.lang.*;

class Publisher {
     List <Subscriber> subscribers      
     void send (String message){}   
}

interface Subscriber {
    void receive(String message)
}

public class Test1 extends Specification {

    Publisher publisher = new Publisher()
    def subscriber = Mock(Subscriber)
    def subscriber2 = Mock(Subscriber)

    def setup() {           
        (publisher.subscribers) << subscriber
        (publisher.subscribers) << subscriber2
    }

    def "should send message to subscriber"() {

        when:
        publisher.send("hello")

        then:
        1 * subscriber.receive("hello")
        1 * subscriber2.receive("hello")
    }
}
导入spock.lang.*;
类发布者{
列出订户
无效发送(字符串消息){}
}
接口用户{
无效接收(字符串消息)
}
公共类Test1扩展了规范{
Publisher Publisher=new Publisher()
def订阅服务器=模拟(订阅服务器)
def subscriber2=Mock(订户)
def setup(){

(publisher.subscribers)这是您的publisher类中的一个bug,它不会初始化其
subscribers
字段(因此是NPE)。
列表以及如何解决此bug?此bug是否报告为某个问题?