Java TestObserver在单元测试中未获取数据

Java TestObserver在单元测试中未获取数据,java,rx-java,rx-java2,Java,Rx Java,Rx Java2,我已经为下课写了单元测试。测试中的TestObserver无法接收任何数据。我不知道该做什么 public class DataLocationMonitor { private PublishSubject<Object> dataLocatorSubject; public DataLocationMonitor(...) { this.dataLocatorSubject = PublishSubject.create(); }

我已经为下课写了单元测试。测试中的TestObserver无法接收任何数据。我不知道该做什么

public class DataLocationMonitor {

    private PublishSubject<Object> dataLocatorSubject;


    public DataLocationMonitor(...) {
        this.dataLocatorSubject = PublishSubject.create();
    }


    public Observable<Object> getObservable() {
        return this.dataLocatorSubject;
    }


    public void handleData(Object data) {
        if (data instanceof DataMessage) {
            DataMessage message = new DataMessage(...);
            this.dataLocatorSubject.onNext(message);
        }   
    }  
}


@RunWith(MockitoJUnitRunner.class)
public class DataLocationMonitorTest {

private DataLocationMonitor target;

@Before
public void setUp() {   
    MockitoAnnotations.initMocks(this);
    this.target = new DataLocationMonitor(...);
}

 @Test
 public void handleData_dataLocatorSubjectOnNextCalled() {

    TestObserver<Object> observer= TestObserver.create(); 
    Observable<Object> dataLocatorSubject = this.target.getObservable();
    DataMessage data = new DataMessage();
    this.target.handleData(data);
    dataLocatorSubject.subscribe(observer);
    observer.assertSubscribed();
    observer.awaitCount(1);
    observer.assertValueCount(1);
 }
} 
公共类DataLocationMonitor{
私人出版主体;
公共数据位置监视器(…){
this.dataLocatorSubject=PublishSubject.create();
}
公共可观察的getObservable(){
返回此.dataLocatorSubject;
}
公共无效handleData(对象数据){
if(数据消息的数据实例){
DataMessage消息=新的DataMessage(…);
this.dataLocatorSubject.onNext(消息);
}   
}  
}
@RunWith(MockitoJUnitRunner.class)
公共类DataLocationMonitorTest{
私有数据定位监控目标;
@以前
public void setUp(){
initMocks(this);
this.target=新的DataLocationMonitor(…);
}
@试验
public void handleData_datalocatorSubjectOnExtCalled(){
TestObserver=TestObserver.create();
Observable dataLocatorSubject=this.target.getObservable();
DataMessage数据=新的DataMessage();
此.target.handleData(数据);
dataLocatorSubject.subscribe(观察者);
observer.assertSubscribed();
观察员:人数(1);
观察者:资产价值计数(1);
}
} 

当我运行测试时,我得到java.lang.AssertionError:值计数不同;预期:1,实际:0(闩锁=1,值=0,错误=0,完成=0,超时!)

交换
this.target.handleData
dataLocatorSubject.subscribe
行的顺序
PublishSubject
不保留经过的项目,因此迟到的订户不会看到任何以前的
onNext
'd项目

TestObserver=TestObserver.create();
Observable dataLocatorSubject=this.target.getObservable();
DataMessage数据=新的DataMessage();
//先订阅
dataLocatorSubject.subscribe(观察者);
//下一个信号
此.target.handleData(数据);
observer.assertSubscribed();
观察员:人数(1);
观察者:资产价值计数(1);

交换
this.target.handleData
dataLocatorSubject.subscribe
行的顺序
PublishSubject
不保留经过的项目,因此迟到的订户不会看到任何以前的
onNext
'd项目

TestObserver=TestObserver.create();
Observable dataLocatorSubject=this.target.getObservable();
DataMessage数据=新的DataMessage();
//先订阅
dataLocatorSubject.subscribe(观察者);
//下一个信号
此.target.handleData(数据);
observer.assertSubscribed();
观察员:人数(1);
观察者:资产价值计数(1);