在VS2012单元测试中创建和测试自定义MFC CEdit时,在第21行的afxwin1.inl中断言

时间:2013-09-04 18:35:40

标签: c++ unit-testing visual-studio-2012 mfc assert

我的老板有一个名为CEdit的自定义CInPlaceEdit类,我们目前正在使用单元测试项目在Visual Studio 2012中测试此类。基本上我们在单元测试中创建CEdit类,如下所示:

CDialog *dlg = new CDialog();
dlg->Create(IDD_EDIT_STRING);
CWnd *pListCtrl = dlg;

auto pParent = pListCtrl->GetParent();


auto editSpLat = new CInPlaceEdit(-1, i, pszBlank, GetEditTemplates()->m_pEdtSpLat, (void*)&m_pSP, pListCtrl, IPE_CTRL | IPE_PTRTOPTR_VAR | IPE_RIGHT_JUSTIFY, ids);
editSpLat->Create(dwStyle, CRect(0, 0, 1, 1), pListCtrl, IDC_INPLACEEDIT + i);

在调用Create(...)期间抛出第21行afxwin1.inl中的断言;文件afxwin1.inl中的断言是ASSERT(afxCurrentInstanceHandle != NULL)。有没有办法让我的单元测试能够超越这个?

1 个答案:

答案 0 :(得分:-1)

字符集不匹配是导致此问题的一种可能性。

mfc dll正在使用UNICODE。

确保"IDD_EDIT_STRING"使用的是unicode,而不使用ANSI

也许尝试在字符集中使用No Set

(配置属性->常规->字符集)