2009-05-01 55 views
2

有沒有人使用MSTest來測試MFC代碼?在MFC中使用MSTest

我創建了一個託管的C++測試項目,並可以在其中編寫單元測試,但一旦我#include <afxwin.h>然後我有問題。代碼會編譯,當它運行測試時,UI會掛起,並且沒有符號會加載。你也不能調試測試。如果我刪除#include,那麼測試將成功運行。有任何想法嗎?

它使用/ clr與多線程調試(/ mtd)編譯並使用MFC通過共享的dll。如果我選擇靜態鏈接到MFC,那麼編譯器(VSVC9.0)會告訴我/ clr和/ mtd不兼容。

另外,你認爲添加DependencyInput的測試將解決這個問題嗎?我嘗試添加一些MFC dll作爲依賴性輸入,但它沒有幫助。但我可能會做錯。

謝謝。

回答

0

從命令行是否一樣?

沒有這樣做。但是可以創建一個靜態窗口?用進程管理器檢查最佳進程。

1

在工作中,使用visual studio 2010,我們成功創建了一個託管C++測試項目來測試mfc代碼。

我們開始使用嚮導創建一個C++測試項目。然後,在單元測試項目的配置屬性,改變下列:

  • 通用> MFC的USE =變更爲「使用MFC在共享DLL」
  • 通用>公共語言運行時支持=變更爲「通用語言支持(/ CLR)
  • (在調試配置只)接頭 - >輸出 - >忽略特定的默認庫=添加MSVCRT

在stdafx.h中:我有以下

// Modify the following defines if you have to target a platform prior to the ones specified below. 
// Refer to MSDN for the latest info on corresponding values for different platforms. 
#ifndef WINVER    // Allow use of features specific to Windows XP or later. 
#define WINVER 0x0501  // Change this to the appropriate value to target other versions of Windows. 
#endif 

#ifndef _WIN32_WINNT  // Allow use of features specific to Windows XP or later.     
#define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target other versions of Windows. 
#endif      

#ifndef _WIN32_IE   // Allow use of features specific to IE 6.0 or later. 
#define _WIN32_IE 0x0600 // Change this to the appropriate value to target other versions of IE. 
#endif 

#include <afxwin.h>   // MFC core and standard components 
#include <afxext.h>   // MFC extensions 

#ifndef _AFX_NO_OLE_SUPPORT 
#include <afxole.h>   // MFC OLE classes 
#include <afxodlgs.h>  // MFC OLE dialog classes 
#include <afxdisp.h>  // MFC Automation classes 
#endif // _AFX_NO_OLE_SUPPORT 

#ifndef _AFX_NO_DB_SUPPORT 
#include <afxdb.h>   // MFC ODBC database classes 
#endif // _AFX_NO_DB_SUPPORT 

#include <afxdtctl.h>  // MFC support for Internet Explorer 4 Common Controls 
#ifndef _AFX_NO_AFXCMN_SUPPORT 
#include <afxcmn.h>   // MFC support for Windows Common Controls 
#endif // _AFX_NO_AFXCMN_SUPPORT 

而一切都像一個魅力! 讓我知道它是否適合你