1
管理対象のVS C++テストコードでTestContextクラスのTestNameメンバを使用して、テストメソッドの名前をデバッグコンソールに自動的に出力するにはどうすればよいですか?Managed C++テストでTestContext.TestNameを使用
私が見つけたすべての例はC#であり、それをC++に正しく変換することはできません。ここでは、静的なClassInitializeメソッド中にTestContextオブジェクトをキャプチャすることでこれを試みますが、これは機能しません。
#include <windows.h>
#include <msclr/marshal_cppstd.h>
using namespace Microsoft::VisualStudio::TestTools::UnitTesting;
[TestClass]
public ref class SampleTestClass
{
public:
[TestMethod]
void testMethod1()
{
}
[TestMethod]
void testMethod2()
{
}
[TestMethod]
void testMethod3()
{
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Tests Setup and Teardown //
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
static TestContext^ myTestContext;
[TestInitialize]
void testCaseInitialize()
{
msclr::interop::marshal_context context;
std::wstring testName = context.marshal_as<std::wstring>(myTestContext->TestName);
std::wstring dbgSend = L"initializing " + testName;
::OutputDebugString(dbgSend.c_str());
}
[TestCleanup]
void testCaseCleanup()
{
msclr::interop::marshal_context context;
std::wstring testName = context.marshal_as<std::wstring>(myTestContext->TestName);
std::wstring dbgSend = L"tearing down " + testName;
::OutputDebugString(dbgSend.c_str());
}
[ClassInitialize]
static void testClassInitialize(TestContext^ context)
{
myTestContext = context;
}
[ClassCleanup]
static void testClassCleanup()
{
}
};
出力
[9404] initializing testMethod1
[9404] tearing down testMethod1
[9404] initializing testMethod1
[9404] tearing down testMethod1
[9404] initializing testMethod1
[9404] tearing down testMethod1
所望の出力
[9404] initializing testMethod1
[9404] tearing down testMethod1
[9404] initializing testMethod2
[9404] tearing down testMethod2
[9404] initializing testMethod3
[9404] tearing down testMethod3