【发布时间】:2013-09-04 18:35:40
【问题描述】:
我的老板有一个名为 CInPlaceEdit 的自定义 CEdit 类,我们目前正在使用单元测试项目在 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);
第 21 行 afxwin1.inl 中的断言在调用 Create( ... ) 期间被抛出;文件 afxwin1.inl 中的断言是 ASSERT(afxCurrentInstanceHandle != NULL)。有没有办法让我的单元测试通过这个?
【问题讨论】:
-
你的单元测试设置是什么?您的测试是在 .dll 中实现的吗?测试是如何托管的?主机应用程序是 MFC 应用程序吗?
-
是的,我们所有的单元测试都是在 DLL 中实现的,并且被测试的应用程序是一个 MFC 应用程序。您的意思是如何托管测试?
-
一个.dll不能自己执行,你需要提供一个hosts这个.dll的环境。随着您的单元测试被实现为 .dll,您需要确保正确管理 MFC 的状态(有关详细信息,请参阅MFC Module State Implementation)。
-
似乎是一些静态/动态链接问题,但我可能不正确。看看这个:social.msdn.microsoft.com/Forums/vstudio/en-US/…
标签: c++ unit-testing visual-studio-2012 mfc assert