[VisualStudio2015]VC++ のユニットテストの結果が文字化けする原因
4237 ワード
このテストは失敗する。
TEST_METHOD(BuggyAssertion)
{
Assert::AreEqual("あいうえお", "かきくけこ");
}
問題なのは、実行結果。こうなる。
原因
以下にインストールされているヘッダー内に、expectとactualをstd::wstring
型にコンバートするtemplateが実装されている。
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\UnitTest\include
CppUnitTestAssert.h
// std::string → std::wstring 版
template<> inline std::wstring ToString<std::string> (const std::string& t) { RETURN_WIDE_STRING(t.c_str()) ; }
// char* → std::wstring 版
template<> inline std::wstring ToString<char>(char* t) { if (NULL == t) return std::wstring(L"(NULL)"); RETURN_WIDE_STRING(t); }
共通で使用されるRETURN_WIDE_STRING
マクロはこうなっている。
#define RETURN_WIDE_STRING(inputValue) std::wstringstream _s;_s << inputValue; return _s.str()
見やすくしてみる。
std::wstring RETURN_WIDE_STRING(/* std::string or char* */ inputValue)
{
std::wstringstream _s;
_s << inputValue;
return _s.str();
}
std::wstringstream
ストリームにただ流し込んでいるだけだった。
スマートに解決する方法が思いつかない。
Author And Source
この問題について([VisualStudio2015]VC++ のユニットテストの結果が文字化けする原因), 我々は、より多くの情報をここで見つけました https://qiita.com/hirocueki2/items/e908d466f794858650b1著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .