当前位置: 首页 > 图文教程 > 开发语言 > VC++ > 使用测试优先方法开发用户界面
| 使用测试优先方法开发用户界面 演示代码下载 class TestWidgets : public CppUnit::TestCase{ CPPUNIT_TEST_SUITE(TestWidgets); CPPUNIT_TEST(testList); CPPUNIT_TEST(testField); CPPUNIT_TEST(testAddButton); CPPUNIT_TEST(testDeleteButton); CPPUNIT_TEST_SUITE_END();public: TestWidgets(); virtual ~TestWidgets();public: virtual void setUp(); virtual void tearDown(); void testList(); void testField(); void testAddButton(); void testDeleteButton();private: MovieListWindow* m_pWindow;};其中,MovieListWindow是一个窗口类。我们来看看其中的一个测试,请看代码中的注释。void TestWidgets::testAddButton(){ //得到btn指针 CButton* pAddButton = m_pWindow->GetAddButton(); //检查是否生成btn CPPUNIT_ASSERT(pAddButton->m_hWnd); //检查btn是否可见 CPPUNIT_ASSERT_EQUAL(TRUE, ::IsWindowVisible(pAddButton->m_hWnd)); CString strText; pAddButton->GetWindowText(strText); CString strExpect = "Add"; //检查btn的Label文字是否正确 CPPUNIT_ASSERT_EQUAL(strExpect, strText);} 编译测试代码,编译器会给我们一些出错信息。这要求我们必须马上编写产品代码以让编译通过。首先第一个要实现的产品代码就是MovieListWindow窗口类。class AFX_EXT_CLASS MovieListWindow : public CDialog{public: MovieListWindow(CWnd* pParent = NULL); // standard constructor CListBox* GetMovieListBox(){return &m_MovieListBox;}; CEdit* GetMovieField(){return &m_MovieField;}; CButton* GetAddButton(){return &m_AddBtn;}; CButton* GetDeleteButton(){return &m_DeleteBtn;}; void Init(); // Dialog Data //{{AFX_DATA(MovieListWindow) enum { IDD = IDD_MOVIELISTDLG }; CButton m_AddBtn; CButton m_DeleteBtn; CEdit m_MovieField; CListBox m_MovieListBox; //}}AFX_DATA // Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(MovieListWindow) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX |