//將Mock Objects的內部數據和期望值進行比較
CPPUNIT_ASSERT_EQUAL(MovieNamesWithAddition.GetSize(),
m_pEditor->GetMovies()->GetSize());
//檢查列表控件中影片名是否正確
CString strNewMovieName;
pListBox->GetText(pListBox->GetCount()-1, strNewMovieName);
CPPUNIT_ASSERT_EQUAL(LOST_IN_SPACE, strNewMovieName);
//將Mock Objects的內部數據和期望值進行比較
int nIndex = m_pEditor->GetMovies()->GetSize();
CPPUNIT_ASSERT_EQUAL(LOST_IN_SPACE, m_pEditor->GetMovies()->GetAt(nIndex-1));
//銷毀窗口
pWindow->DestroyWindow();
delete pWindow;
pWindow = NULL;
}
請注意,這里測試的數據都是mockEditor里的,而且在UI進行添加操作后,還將mockEditor內部的狀態與期待狀態做了比較。
[NextPage]
CPPUNIT_ASSERT_EQUAL(MovieNamesWithAddition.GetSize(), m_pEditor->GetMovies()->GetSize());
CPPUNIT_ASSERT_EQUAL(LOST_IN_SPACE, m_pEditor->GetMovies()->GetAt(nIndex-1));
其他刪除操作的測試跟添加類似,在此不做詳述。至此,我們就完成了這個GUI應用程序的開發。
。牐6、源碼說明
本文附帶的代碼包括三個Project,分別是Movie、 GuiTestFirst、AppMovieList.Movie是產品代碼.GuiTestFirst是測試代碼。AppMovieList是使用Movie輸出的產品代碼而寫的應用程序,它從MovieListEditor繼承出一個新的影片管理類 MyEditor。它主要是演示如何使用我們提煉出來的MovieListEditor接口。例如你可以實現CXmlMovieListEditor,CAccessMovieListEditor等等。進入GuiTestFirst打開所有這些工程。
。牐7、總結
。牐燼)、對GUI應用實施測試優先開發方法,這在測試驅動開發中并不是必須的,可根據開發的實際情況來選擇。
。牐燽)、我們通過引入Mock Objects,我們使測試代碼和外部復雜的資源隔離開來,同時也使我們能夠從中既有代碼中提煉出清晰的接口,使代碼整潔可用。
文章來源于領測軟件測試網 http://www.kjueaiud.com/