0

我在 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* 版本,但没有帮助。

我怀疑它可能与命名空间有关,但我不确定如何解决这个问题。

谢谢

4

0 回答 0