第一步的目标是, 数据与UI的分离.我是这样做, 新建MyData类, 把数据移动到GetName()中.
Code Snippet
- static wxString MyData::GetName()
- {
- static int clickNum=0;
- ++clickNum;
- wxString result;
- if (clickNum % 2) {
- result.assign(_T("Hello BianBian!"));
- }
- return result;
- }
那么 点击事件就可以改为,
Code Snippet
- void MyDialog::OnClickButton( wxCommandEvent& event )
- {
- wxStaticText* pCtrl = (wxStaticText*) FindWindow(ID_LABEL);
- pCtrl->SetLabel(MyData::GetName());
- Layout();
- }
第二部的目标是,对MyData进行测试, 我使用的是 googleTesting
新建一个main函数, 以宏来决定是否测试, 如下
Code Snippet
- #ifdef USING_TEST
- int main(int argc, char* argv[])
- {
- testing::InitGoogleTest(&argc, argv);
- return RUN_ALL_TESTS();
- }
- #endif // USING_TEST
接下来, 新建TestMyData.cpp, 写好测试即可
Code Snippet
- TEST(TestMyData, GetName)
- {
- for (int i=0; i<100; ++i)
- {
- wxString result = (i+1)%2? _T("Hello BianBian!"): wxEmptyString;
- EXPECT_TRUE(result == MyData::GetName()) << "click Num: " << i+1;
- }
- }
这样就可以对数据逻辑进行测试.
下一个目标是UI与UI的逻辑进行分离.
阅读(544) | 评论(0) | 转发(0) |