Dialog Based μμμ ν μ€νΈ ¶
Dialog Based μ κ²½μ° Modal Dialog λ₯Ό μ΄μ©νκ² λλ€. μ΄ κ²½μ° Dialog λ΄μμλ§ λ©μΈμ§λ£¨νκ° μλνκ² λλ―λ‘, DoModal ν¨μλ‘ λ€μ΄μΌλ‘κ·Έλ₯Ό λμ΄ μ΄νμ μ½λλ ν΄λΉ Dialog κ° λ«νκΈ° μ κΉμ§λ μ€νλμ§ μλλ€. κ³ λ‘, CppUnit μμμ fixture λ₯Ό 미리 ꡬμ±νμ¬ μΈ μ μλ€.
κ·Έλμ, ν
μ€νΈλ₯Ό μλν λ Modaless Dialog λ‘ λ§λ€κ³ μ€νμ νμλ€.
μνλ μλ λͺ¨μ΅μ μ΄λ λ€.
- Editbox μ μ무 κΈμ λ£κ³
- Add λ²νΌμ λλ₯΄λ©΄
- List box μ Editbox μ μ΄ κΈμ΄ μμλλ‘ μ²μλΆν° μ±μμ§κ³
- List box μμμ 컀μλ μ±μμ§ κΈμ μμΉνλ€.
- List box μ κ°μ΄ μ±μμ§κ³ λ λ€, Editbox μ κΈμ μ§μμ§λ€.
1. GUI Runner Setting ¶
μ΄λ App ν΄λμ€μ InitInstance ν¨μμμ ν΄μ€λ€.
~cpp
#include "stdafx.h"
#include "GuiTestingOne.h"
#include "GuiTestingOneDlg.h"
#include "cppunit\ui\mfc\TestRunner.h"
#include "GuiTestCase.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
BEGIN_MESSAGE_MAP(CGuiTestingOneApp, CWinApp)
//{{AFX_MSG_MAP(CGuiTestingOneApp)
// NOTE - the ClassWizard will add and remove mapping macros here.
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG
ON_COMMAND(ID_HELP, CWinApp::OnHelp)
END_MESSAGE_MAP()
CGuiTestingOneApp::CGuiTestingOneApp()
{
}
CGuiTestingOneApp theApp;
BOOL CGuiTestingOneApp::InitInstance()
{
AfxEnableControlContainer();
CppUnit::MfcUi::TestRunner runner;
runner.addTest (GuiTestCase::suite());
runner.run();
/* --- Test Runner λ§ μ€νλλλ‘, λ€μ΄μΌλ‘κ·Έ λμ°λ λΆλΆμ μΌλ¨ λ§μλλ€. λ§μ§λ§μ μ€νν λ μ΄ λΆλΆμ μ£Όμμ²λ¦¬ λ λΆλΆμ νμ΄μ£Όλ©΄ λλ€.
#ifdef _AFXDLL
Enable3dControls(); // Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif
CGuiTestingOneDlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
}
else if (nResponse == IDCANCEL)
{
}
*/
return FALSE;
}
2. Test Case μ μμ± ¶
1. μ°μ΅ ¶
μΌλ¨, μ λλ‘ μλνλμ§ μμ보기 μν΄ μ°μ΅κ²Έ m_bFlag λ³μλ₯Ό λ§λ€μ΄μ ν
μ€νΈλ₯Ό νλ€.
| ν μ€νΈ | ν΅κ³Όμ μμλλ κ²°κ³Ό |
| test1One | μ°μ΅κ²Έ Assert Equals. 10 == 10 |
| test2GuiOne | λ²νΌμ΄ λλ¬μ‘μ κ²½μ°μ CGuiTestingOneDlg::m_bFlag κ° true μνκ° λλ€. |
~cpp
#include <cppunit/TestCase.h>
#include <cppunit/Extensions/HelperMacros.h>
#include "stdafx.h" // resource, mfc λ₯Ό μ΄μ©ν μ μλ€.
#include "GuiTestingOneDlg.h" // import GuiTestingOneDlg
class GuiTestCase : public CppUnit::TestCase {
CPPUNIT_TEST_SUITE(GuiTestCase);
CPPUNIT_TEST ( test1One );
CPPUNIT_TEST ( test2GuiOne );
CPPUNIT_TEST ( test3ListAdd );
CPPUNIT_TEST_SUITE_END();
public:
CGuiTestingOneDlg* pDlg;
void setUp () {
pDlg = new CGuiTestingOneDlg();
pDlg->Create(IDD_GUITESTINGONE_DIALOG);
}
void tearDown () {
delete pDlg;
}
public:
void test1One () {
CPPUNIT_ASSERT_EQUAL (10, 10);
}
void test2GuiOne () {
pDlg->OnButtonadd();
CPPUNIT_ASSERT_EQUAL (true, pDlg->m_bFlag);
}
};
μ½λ μΆκ°
~cpp
void CGuiTestingOneDlg::OnButtonadd()
{
// TODO: Add your control notification handler code here
m_bFlag = true;
}
2. ν μ€νΈ μΆκ° ¶
| ν μ€νΈ | ν΅κ³Όμ μμλλ κ²°κ³Ό |
| test1One | μ°μ΅κ²Έ Assert Equals. 10 == 10 |
| test2GuiOne | λ²νΌμ΄ λλ¬μ‘μ κ²½μ°μ CGuiTestingOneDlg::m_bFlag κ° true μνκ° λλ€. |
| test3ListAdd | Editbox μ "Testing..." μ μ ν . λ²νΌμ λλ μ λ Listbox μ item κ°―μκ° 1κ°μμ νμΈ |
| . | Listbox μ 첫λ²μ§Έ item μ μ€νΈλ§μ΄ "Testing..." μμ νμΈ |
~cpp
void test3ListAdd () {
pDlg->m_ctlEdit.SetWindowText("Testing...");
pDlg->OnButtonadd();
CPPUNIT_ASSERT_EQUAL (1, pDlg->m_ctlList.GetCount());
CString str;
pDlg->m_ctlList.GetText(0, str);
CPPUNIT_ASSERT ( isSameString(str, "Testing..."));
}
bool isSameString (CString& str1, PSTR str2) {
return str1.Compare(str2) == 0;
}
};
μ½λ μΆκ°
~cpp
void CGuiTestingOneDlg::OnButtonadd()
{
// TODO: Add your control notification handler code here
m_bFlag = true;
CString str;
m_ctlEdit.GetWindowText(str);
m_ctlList.AddString(str);
}
3. more... ¶
| ν μ€νΈ | ν΅κ³Όμ μμλλ κ²°κ³Ό |
| test1One | μ°μ΅κ²Έ Assert Equals. 10 == 10 |
| test2GuiOne | λ²νΌμ΄ λλ¬μ‘μ κ²½μ°μ CGuiTestingOneDlg::m_bFlag κ° true μνκ° λλ€. |
| test3ListAdd | Editbox μ "Testing..." μ μ ν . λ²νΌμ λλ μ λ Listbox μ item κ°―μκ° 1κ°μμ νμΈ |
| . | Listbox μ 첫λ²μ§Έ item μ λ¬Έμμ΄μ΄ "Testing..." μμ νμΈ |
| test4ListAddMore | test3 μ μΆκ°λ νν. Editbox μ λ€μ "Testing2..." λ₯Ό μ ν νκ³ , λ²νΌμ λλ μ λ Listbox μ item κ°―μκ° 2κ°μμ νμΈ |
| . | Listbox μ λλ²μ§Έ item μ λ¬Έμμ΄μ΄ "Testing2..." μμ νμΈ |
~cpp
void test4ListAddMore () {
test3ListAdd();
CString str;
pDlg->m_ctlEdit.SetWindowText("Testing2...");
pDlg->OnButtonadd();
CPPUNIT_ASSERT_EQUAL (2, pDlg->m_ctlList.GetCount());
pDlg->m_ctlList.GetText(1, str);
CPPUNIT_ASSERT ( isSameString(str, "Testing2..."));
}
4. 'List box μμμ 컀μλ μ±μμ§ κΈμ μμΉνλ€' μ λν ν μ€νΈ ¶
| ν μ€νΈ | ν΅κ³Όμ μμλλ κ²°κ³Ό |
| test1One | μ°μ΅κ²Έ Assert Equals. 10 == 10 |
| test2GuiOne | λ²νΌμ΄ λλ¬μ‘μ κ²½μ°μ CGuiTestingOneDlg::m_bFlag κ° true μνκ° λλ€. |
| test3ListAdd | Editbox μ "Testing..." μ μ ν . λ²νΌμ λλ μ λ Listbox μ item κ°―μκ° 1κ°μμ νμΈ |
| . | Listbox μ 첫λ²μ§Έ item μ λ¬Έμμ΄μ΄ "Testing..." μμ νμΈ |
| test4ListAddMore | test3 μ μΆκ°λ νν. Editbox μ λ€μ "Testing2..." λ₯Ό μ ν νκ³ , λ²νΌμ λλ μ λ Listbox μ item κ°―μκ° 2κ°μμ νμΈ |
| . | Listbox μ λλ²μ§Έ item μ λ¬Έμμ΄μ΄ "Testing2..." μμ νμΈ |
| test5ListCursorOne | test3 μ§νμ μ νλ Item μ΄ 0 λ²μ§Έ μμ νμΈ |
| test6ListCursorTwo | test4 μ§νμ μ νλ Item μ΄ 1 λ²μ§Έ μμ νμΈ |
~cpp
void test5ListCursorOne () {
test3ListAdd();
CPPUNIT_ASSERT_EQUAL(0, pDlg->m_ctlList.GetCurSel());
}
void test6ListCursorTwo () {
test4ListAddMore();
CPPUNIT_ASSERT_EQUAL(1, pDlg->m_ctlList.GetCurSel());
}
μ½λ μΆκ°
~cpp
void CGuiTestingOneDlg::OnButtonadd()
{
// TODO: Add your control notification handler code here
CString str;
m_ctlEdit.GetWindowText(str);
m_ctlList.AddString(str);
m_ctlList.SetCurSel(m_ctlList.GetCount()-1);
m_bFlag = true;
}
5. edit box μ λ΄μ©μ΄ λ°μ΄ν° μΆκ°ν μ΄κΈ°ν λλμ§ νμΈ ¶
| ν μ€νΈ | ν΅κ³Όμ μμλλ κ²°κ³Ό |
| test1One | μ°μ΅κ²Έ Assert Equals. 10 == 10 |
| test2GuiOne | λ²νΌμ΄ λλ¬μ‘μ κ²½μ°μ CGuiTestingOneDlg::m_bFlag κ° true μνκ° λλ€. |
| test3ListAdd | Editbox μ "Testing..." μ μ ν . λ²νΌμ λλ μ λ Listbox μ item κ°―μκ° 1κ°μμ νμΈ |
| . | Listbox μ 첫λ²μ§Έ item μ λ¬Έμμ΄μ΄ "Testing..." μμ νμΈ |
| test4ListAddMore | test3 μ μΆκ°λ νν. Editbox μ λ€μ "Testing2..." λ₯Ό μ ν νκ³ , λ²νΌμ λλ μ λ Listbox μ item κ°―μκ° 2κ°μμ νμΈ |
| . | Listbox μ λλ²μ§Έ item μ λ¬Έμμ΄μ΄ "Testing2..." μμ νμΈ |
| test5ListCursorOne | test3 μ§νμ μ νλ Item μ΄ 0 λ²μ§Έ μμ νμΈ |
| test6ListCursorTwo | test4 μ§νμ μ νλ Item μ΄ 1 λ²μ§Έ μμ νμΈ |
| test7EmptyEditbox | test3 μ§νμ Editbox μ μ€νΈλ§μ΄ λΉμλμ§ νμΈ |
~cpp
void test7EmptyEditbox () {
test3ListAdd();
CString str;
pDlg->m_ctlEdit.GetWindowText(str);
CPPUNIT_ASSERT (str.IsEmpty());
}
μ½λ μΆκ°
~cpp
void CGuiTestingOneDlg::OnButtonadd()
{
// TODO: Add your control notification handler code here
CString str;
m_ctlEdit.GetWindowText(str);
m_ctlList.AddString(str);
m_ctlList.SetCurSel(m_ctlList.GetCount()-1);
m_ctlEdit.SetWindowText("");
m_bFlag = true;
}
μ¬κΈ°κΉμ§λ‘ μκ°ν΄λμ ν
μ€νΈλ€μ΄ μ λΆ μλ£. μμ InitInstance μ μ¨ λ£μ μ£Όμμ νκ³ , μ€μ λ‘ μ€νν΄λ³΄μ.
~cpp
BOOL CGuiTestingOneApp::InitInstance()
{
AfxEnableControlContainer();
CppUnit::MfcUi::TestRunner runner;
runner.addTest (GuiTestCase::suite());
runner.run();
#ifdef _AFXDLL
Enable3dControls(); // Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif
CGuiTestingOneDlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
}
else if (nResponse == IDCANCEL)
{
}
return FALSE;
}













