使用VS11 RC。我有用C++編寫的客戶端可執行文件,我試圖用C#單元測試庫(Metro Style apps)項目進行測試。測試失敗,出現異常未註冊的類HRESULT 0x80040154(REGDB_E_CLASSNOTRG);我相信這與測試項目中的警告有關:可執行文件'Client.exe'被指定爲winmd文件'C:.Client.winmd'的實現。只有進程內服務器支持在應用程序清單中生成註冊信息。您需要在應用清單中指定進程外服務器註冊信息。如何對Metro可執行文件中定義的類進行單元測試
在我看來,MSTest正在尋找類作爲COM對象,並警告告訴我,我需要指定它作爲一個進程外的服務器。不幸的是,我不認爲我想這樣做,因爲它是一個可執行文件,即使這是我想要的,我也無法弄清楚如何去做。
我可以簡單地將被測試的課程移動到不同的項目中,但是我不想這樣做,沒有理由比「我無法實現這個目標」更好。
有什麼辦法可以單元測試在Metro可執行文件中定義的類嗎?
我想你需要將你的代碼移動到一個DLL中。類型只能從DLL激活。有一些技巧可以將EXE轉換爲DLL,以便可以激活它的類型,但是我不知道單元測試框架/驅動程序是這樣做還是可以做到的。 –
聽起來像是對我的回答。你不會有一個偶然的描述類型激活的東西。我正試圖掌握一些底層基礎設施。 – basilard99
我正在度假,但我會在下週嘗試追查好文件。目前關於MSDN的文檔很少,所以大多數最好的信息都可以在博客文章和頻道9視頻中找到(唉)。 –