Visual Studio のテストフレームワークを使っていて、テストコードが存在するモジュールのパスを知りたいことがたまにあって、いつも「どうやるんだっけ?」となるのでメモ。
unittest.cpp
TEST_CLASS(TestClass)
{
static void DummyFunction()
{
}
TEST_METHOD(TestMethod)
{
HMODULE hModule{};
GetModuleHandleEx(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS, reinterpret_cast<PCWSTR>(DummyFunction), &hModule);
std::vector<wchar_t> filePath(MAX_PATH);
GetModuleFileName(hModule, filePath.data(), filePath.size());
Logger::WriteMessage(filePath.data()); // DummyFunction が存在するモジュールのフルパス
}
};