我在VS 2012中定义了单元测试,由于错误C2338而无法编译。
错误C2338:测试编写者必须为您的类类std :: basic_string定义ToString的特化,类std :: allocator> __cdecl Microsoft :: VisualStudio :: CppUnitTestFramework :: ToString(const struct CoreUnitTests :: TestStruct &安培)。 c:\ program files(x86)\ microsoft visual studio 11.0 \ VC \单元测试\包括\ 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 *版本,但没有帮助。
我怀疑它可能与名称空间有关,但我不确定如何解决这个问题。
由于