我试图得到一些单元测试原生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