使用测试优先方法开发用户界面
2008-01-19 20:24:54 来源:WEB开发网核心提示:编译后会有出错信息,主要的错误有:a)、我们把m_pEditor保存在MovieListWindow中了,使用测试优先方法开发用户界面(5),这需要我们修改原来的MovieListWindow的构造函数,b)、没有MovieListEditor类,因此测试没有通过,赶紧添加消息响应函数,MovieListEditor的
编译后会有出错信息,主要的错误有:
a)、我们把m_pEditor保存在MovieListWindow中了,这需要我们修改原来的MovieListWindow的构造函数。
b)、没有MovieListEditor类。
MovieListEditor的实现如下:
class AFX_EXT_CLASS MovieListEditor
{
public:
MovieListEditor();
virtual ~MovieListEditor();
public:
virtual CStringArray* GetMovies(){return &m_arMovieList;};
virtual void Add(CString strMovie){m_arMovieList.Add(strMovie);};
virtual void Delete(int nIndex){m_arMovieList.RemoveAt(nIndex);};
private:
CStringArray m_arMovieList;
};
再次编译,已经通过.运行测试,发现在:
CPPUNIT_ASSERT_EQUAL(MovieNamesWithAddition.GetSize(), pListBox->GetCount());
测试通不过。检查后知道原因是,我们在测试代码里:
::SendMessage(pBtn->m_hWnd, BM_CLICK, 0, 0);
给add button发送了点击按钮的消息,但是在MovieListWindow 窗口中我们没有加入消息的响应函数,因此测试没有通过。赶紧添加消息响应函数。
void MovieListWindow::OnClickAddButton()
{
UpdateData();
CString strNewMovieName;
m_MovieField.GetWindowText(strNewMovieName);
if("" != strNewMovieName)
{
m_pEditor->Add(strNewMovieName);
m_MovieListBox.AddString(strNewMovieName);
}
}
编译、测试、通过。
更多精彩
赞助商链接