WEB开发网
开发学院软件开发VC 使用测试优先方法开发用户界面 阅读

使用测试优先方法开发用户界面

 2008-01-19 20:24:54 来源:WEB开发网   
核心提示:请注意它和前面我们定义的MovieListEditor的不同,接下来,使用测试优先方法开发用户界面(7),我们应该定义一个Mock Objects,当然它是从MovieListEditor继承下来的:class mockEditor : public MovieListEditor{public: mockEditor

请注意它和前面我们定义的MovieListEditor的不同。接下来,我们应该定义一个Mock Objects,当然它是从MovieListEditor继承下来的:

class mockEditor : public MovieListEditor
{
public:
   mockEditor();
   virtual ~mockEditor();
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;
};

然后给这个Mock Objects设置初识值,我们选择在它的构造函数里进行。

mockEditor::mockEditor()
{
   m_arMovieList.Add("Star Wars");
   m_arMovieList.Add("Star Trek");
   m_arMovieList.Add("Stargate");
}

我们添加了三个影片用于测试。接着,应该把这个MockObjects的一个实例传递给需要测试的模块。这里就是我们要测试的UI(MovieListWindow)。

m_pEditor = new mockEditor();
  MovieListWindow *pWindow = new MovieListWindow(m_pEditor);

最后我们来看看经过修改后的新的测试添加影片的方法:

void TestOperation::testAdd()
{
   //拷贝一份movie list
    CStringArray MovieNamesWithAddition;
   for(int n=0; n<m_MovieNames.GetSize(); n++)
   {
     MovieNamesWithAddition.Add(m_MovieNames.GetAt(n));
   }
   MovieNamesWithAddition.Add(LOST_IN_SPACE);
   //生成窗口
   MovieListWindow *pWindow = new MovieListWindow(m_pEditor);
   pWindow->Init();
   //填写新的影片的名称
   CEdit* pEdit = pWindow->GetMovieField();
   pEdit->SetWindowText(LOST_IN_SPACE);
   //点击add btn
   CButton* pBtn = pWindow->GetAddButton();
   ::SendMessage(pBtn->m_hWnd, BM_CLICK, 0, 0);
   //检查列表控件中是否已加入新的影片
   CListBox* pListBox = pWindow->GetMovieListBox();
   CPPUNIT_ASSERT_EQUAL(MovieNamesWithAddition.GetSize(), pListBox->GetCount());
   //将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;
}

上一页  2 3 4 5 6 7 8  下一页

Tags:使用 优先

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接