gpt4 book ai didi

c++ - Visual C++ 团队测试问题

转载 作者:太空宇宙 更新时间:2023-11-04 12:27:02 25 4
gpt4 key购买 nike

我正在尝试为使用 Visual Studio 测试套件运行的 native C++ 进行一些单元测试。我只有一个简单的类,名为“Shape”。我遵循了教程并执行了以下步骤:

  • 为我要测试的 native 类创建了一个名为“MShape”的“ref 类”包装器
  • 将配置类型更改为 .dll
  • 将 CLR 支持更改为/CLR
  • 将链接器“配置文件”设置为/PROFILE
  • 重新编译成功
  • 添加了一个 Visual C++ 测试项目
  • 使用单元测试向导添加了新的单元测试
  • 在向导中,选择我要测试的方法

现在我有以下问题:

  • Visual Studio 报告大多数单元测试生成失败,因为“无法比较数组中的两个元素”
  • 当我尝试编译测试项目时,C++ 编译器崩溃。这一行是罪魁祸首:

    MShape_Accessor^ shape = 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 时都会出现同样的问题。

最佳答案

我刚刚使用 MS VS Test 设置了一个简单的测试测试,我可以让它运行。这是项目:

http://www.somethingorothersoft.com/TestTest.zip

我想您遇到的任何问题都与 MShape 的定义有关。

或者,您可以直接在测试中测试您的非托管代码。您需要将测试项目的 CLR 支持从/CLR:Safe 更改为/CLR,然后直接在测试中运行 C++。

我试图在演示中包含该功能,但我无法让这两种功能在同一个项目中运行 - 即,既使用托管包装器又使用不来自同一目标项目的包装器。如果您将 undertest 项目设为静态库和远程 CLR 支持,您将能够在您的测试项目中从它运行未经修改的代码。

关于c++ - Visual C++ 团队测试问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1780024/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com