我在 VS 2012 中定义了一个单元测试,由于错误 C2338,它不会编译。
错误 C2338:测试编写者必须为您的类 std::basic_string,class std::allocator > __cdecl Microsoft::VisualStudio::CppUnitTestFramework::ToString(const struct CoreUnitTests::TestStruct &) 定义 ToString 的特化。c:\program 文件 (x86)\microsoft visual studio 11.0\vc\unittest\include\cppunittestassert.h
在进行 Assert::AreEqual 测试时会发生这种情况。我需要为该类型定义一个 ToString 方法。
我遵循了 cppunittestassert.h 中给出的指导,并在互联网上找到了我已经放入的解决方案。但是错误仍然存在。
这是我正在使用的代码示例:
struct TestStruct
{
public:
float f;
int i;
bool operator == (const TestStruct& rhs) const
{
return (f == rhs.f) && (i == rhs.i);
}
};
namespace Microsoft
{
namespace VisualStudio
{
namespace CppUnitTestFramework
{
template<>
static std::wstring ToString<TestStruct>(const TestStruct& t)
{
std::wstringstream stream;
stream << "TestStruct";
return stream.str();
}
}
}
}
我显然还在做错事。有人有想法么。我已经尝试添加 TestStruct* 版本,但没有帮助。
我怀疑它可能与命名空间有关,但我不确定如何解决这个问题。
谢谢