我試圖得到一些單元測試原生C++和Visual Studio測試套件運行。我只有一個名爲「Shape」的簡單類。我跟着一個教程,做了以下步驟:的Visual C++團隊測試問題
- 創造了一個「引用類」包裝被稱爲「MSHAPE」爲天然I類要測試
- 更改的配置類型.dll文件
- 更改CLR支持到/ CLR
- 設置鏈接 「檔案」 到/ PROFILE
- 成功重新編譯
- 添加一個Visual C++測試項目
- 增加了一個新的單元測試我們荷蘭國際集團的單元測試嚮導
- 在嚮導中,選擇的方法,我想測試
現在我有以下問題:
- Visual Studio的報告說,大多數單元測試生成失敗,因爲「失敗比較陣列」
C++編譯器的崩潰中的兩個元素時,我試圖編譯測試項目。這條線是罪魁禍首:
MShape_Accessor ^形狀= gcnew MShape_Accessor();
如果我右鍵單擊並選擇轉到定義,VS表示符號是未定義的。
這裏是MShapeTest.cpp完整的代碼(由Visual Studio生成):
#include "StdAfx.h"
#include "StdAfx.h"
using namespace Microsoft::VisualStudio::TestTools::UnitTesting;
namespace TestProject1 {
using namespace System;
ref class MShapeTest;
/// <summary>
///This is a test class for MShapeTest and is intended
///to contain all MShapeTest Unit Tests
///</summary>
[TestClass]
public ref class MShapeTest
{
private: Microsoft::VisualStudio::TestTools::UnitTesting::TestContext^ testContextInstance;
/// <summary>
///Gets or sets the test context which provides
///information about and functionality for the current test run.
///</summary>
public: property Microsoft::VisualStudio::TestTools::UnitTesting::TestContext^ TestContext
{
Microsoft::VisualStudio::TestTools::UnitTesting::TestContext^ get()
{
return testContextInstance;
}
System::Void set(Microsoft::VisualStudio::TestTools::UnitTesting::TestContext^ value)
{
testContextInstance = value;
}
}
#pragma region Additional test attributes
//
//You can use the following additional attributes as you write your tests:
//
//Use ClassInitialize to run code before running the first test in the class
//public: [ClassInitialize]
//static System::Void MyClassInitialize(TestContext^ testContext)
//{
//}
//
//Use ClassCleanup to run code after all tests in a class have run
//public: [ClassCleanup]
//static System::Void MyClassCleanup()
//{
//}
//
//Use TestInitialize to run code before running each test
//public: [TestInitialize]
//System::Void MyTestInitialize()
//{
//}
//
//Use TestCleanup to run code after each test has run
//public: [TestCleanup]
//System::Void MyTestCleanup()
//{
//}
//
#pragma endregion
public: [TestMethod]
[DeploymentItem(L"TP4.dll")]
void MShapeConstructorTest()
{
MShape_Accessor^ shape = gcnew MShape_Accessor();
}
};
}
namespace TestProject1 {
}
完全一樣的問題發生在每一個安裝VSTS我試過的。
這不是原生的C++。 – alexkr 2009-11-22 21:24:04
我正在嘗試使用測試套件來測試本機C++類,該套件是託管的。這就是爲什麼我想我必須創建一個託管包裝,正如我所解釋的。這裏介紹的代碼來自Visual Studio生成的Test項目。 – Asik 2009-11-22 21:40:39
你可以發佈'MShape_Accessor'的定義嗎?難道它是一個土生土長的班級,你正試圖把它作爲一個託管班級來「重新」嗎? – 2009-11-22 21:57:06