VS2012:单元测试错误:断言::AreEqual(对象,对象)不起作用
VS2012 : Error with unit test : Assert::AreEqual( object, object ) didn't work
当我在VS 2012上使用Visual Studio Native Unit Test时,我遇到了一个奇怪的问题。我有一个像这样的坐标类:
#ifndef COORDINATES_HPP
#define COORDINATES_HPP
#include <iostream>
namespace Core {
class Coordinates {
public:
Coordinates();
Coordinates( int x, int y );
Coordinates( const Coordinates © );
~Coordinates();
void operator=( Coordinates coordinates );
void operator+=( Coordinates coordinates );
void operator-=( Coordinates coordinates );
Coordinates operator+( Coordinates coordinates );
Coordinates operator-( Coordinates coordinates );
bool operator==( Coordinates coordinates );
bool operator!=( Coordinates coordinates );
int getX() const { return m_x; }
int getY() const { return m_y; }
void setX( const int &val ) { m_x = val; }
void setY( const int &val ) { m_y = val; }
protected:
int m_x, m_y;
};
}
所以问题出现时,我使用:Assert::AreEqual(Coordinates(0,0), Coordinates(0,0));
发送的错误是:c:program files (x86)microsoft visual studio 11.0vcunittestincludecppunittestassert.h 129 1 UnitTest1
你有解决这个问题的办法吗?
PS:对不起,我的英语不是我的母语。
创建赋值运算符后收到的错误,即
错误1错误C2338:测试编写器必须为您的类定义ToString的特化class std::basic_string,class std::allocator> __cdecl Microsoft::VisualStudio::CppUnitTestFramework::ToString(const class Core::Coordinates &)。
与需要为单元测试提供一种方式打印出它期望和接收到的值有关。为此,可以在Microsoft::VisualStudio::CppUnitTestFramework
名称空间中创建ToString函数的模板专门化。例如:
namespace Microsoft{
namespace VisualStudio {
namespace CppUnitTestFramework {
template<>
static std::wstring ToString<Coordinates>(const Coordinates & coord) {
return L"Some string representing coordinate.";
}
}
}
}
之后,应该运行单元测试。
给出错误消息,您可以尝试使操作符==对const更友好:
bool operator==( const Coordinates coordinates ) const;
相关文章:
- 在函数中声明的 ifStream 对象在发布模式下不起作用
- 即使我正在.cpp文件中实例化一个伪对象,.cpp文件内模板函数的定义也不起作用
- C++ 对象数组字符串输入在控制台上不起作用
- 自定义类型转换运算符在转发引用上调用时不起作用(当对象按值传递时有效)
- 模板参数类型推导在函数对象中不起作用
- 对列表迭代器指向的对象不起作用的引用
- 更新对象中的值不起作用
- 为什么重载运算符上的异常说明符'<<'不适用于任何 std::ostream 对象,但对库中定义的运算符不起作用?
- GCC:当层次结构中存在虚拟继承时,C++11 内联对象初始化(使用 "this")不起作用
- 抽象类型的对象 - 覆盖不起作用吗?
- 面向对象 成本计算C++不起作用
- 对象的排序向量不起作用
- 操作员=超载不起作用,除非对象已经初始化
- OpenGL 移动对象不起作用
- 使用纹理绘制多个对象不起作用
- 对象池 - 稍后创建对象不起作用
- C++ 中的动态对象不起作用
- 旋转顶点阵列对象不起作用
- VS2012:单元测试错误:断言::AreEqual(对象,对象)不起作用
- 插入大型BSON对象不起作用