[英]Test update method of Observer with EasyMock
我正在嘗試測試是否實現了Observer接口的類中的update方法。 我正在使用EasyMock來模擬ConcreteObserver,以便可以驗證他的更新功能是否已真正執行。
這是我的主題,可觀察類:
public class Subject extends java.util.Observable {
public funcA() {
...
notifyObservers(this,aVariable);
...
}
}
我有以下類別的觀察者:
public class ConcreteObserver implements java.util.Observer {
public ConcreteObserver(Subject subject) {
subject.observer(this);
}
@Override
public void update(Observable o, Object arg) {
// TODO
}
}
這是我的單元測試:
@Test
public void testUpdateFunction() {
Subject subj = new Subject();
ConcreteObserver mockedObserver = EasyMock.
createMockBuilder(ConcreteObserver.class).
withConstructor(subj).
addMockedMethod("update").
createMock();
mockedObserver.update((Observable) EasyMock.anyObject(),EasyMock.anyObject());
EasyMock.replay(mockedObserver);
subj.funcA();
EasyMock.verify(mockedObserver);
}
不幸的是,我收到以下錯誤:
驗證失敗:ConcreteObserver.update(,):預期:1,實際:0
有關如何解決此問題的任何想法?
如果您想測試ConcreteObserver
,請與您的Subject
隔離進行測試; 如果您要測試Subject
請按照以下步驟進行操作(假定EasyMock
的import static
值):
@Test
public void testUpdateFunction()
{
Subject subject = new Subject();
Observer observer = createMock(Observer.class);
observer.update(eq(subject), anyObject());
replay(observer);
subject.observer(observer);
subject.funcA();
verify(observer);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.