Assert::AreEqual
хочет преобразовать значения в std::wstring
для отображения в случае сбоя, то есть:
Assert failed. Expected:<some value> Actual:<some other value>
, компилятор жалуется, потому что нет встроенного преобразования для используемого вами типа.
Быстрое решение состоит в том, чтобы вместо этого использовать Assert::IsTrue
, поскольку он не будет пытаться преобразовать значения в строки:
Assert::IsTrue(subsets == expected, L"Unexpected value for <subsets>);
Если вы собираетесь сравнивать эти типы a Если вы хотите, чтобы Assert::AreEqual
показывал действительные значения при неудачном завершении теста, вы можете сделать то, что предлагает сообщение компиляции, и создать переопределение ToString
для этого указанного c типа:
#include <CppUnitTestAssert.h>
namespace Microsoft {
namespace VisualStudio {
namespace CppUnitTestFramework {
template<> static inline std::wstring ToString(const std::vector<std::vector<int>> &object)
{
// Insert some code here to convert <object> to wstring
return std::wstring();
}
}
}
}