Estoy tratando de hacer una prueba unitaria en algún código de C++, pero me estoy metiendo en problemas.¿Por qué Assert :: AreEqual en el marco de VS UnitTesting no funciona con std :: string?
tengo algo similar a las siguientes líneas de código ...
std::string s1 = obj->getName();
std::string s2 = "ExpectedName";
Assert::AreEqual(s1, s2, "Unexpected Object Name");
Y estoy recibiendo el siguiente error del compilador ...
error C2665: 'Microsoft::VisualStudio::TestTools::UnitTesting::Assert::AreEqual' :
none of the 15 overloads could convert all the argument types
parece que debe ser una coincidir con the following overload:
AreEqual<(Of <(T>)>)(T, T, String)
no es la sobrecarga por encima de una sobrecarga de la plantilla que debería soportar cualquier objeto, siempre y cuando los argumentos 1 y 2 sean del mismo tipo? ¿O me estoy perdiendo algo?
¿Hay alguna otra forma en que pueda lograr este Assert?
Otra solución (para cadenas solo sin esfuerzo adicional) sería usar la [biblioteca incorporada de referencias] (http://msdn.microsoft.com/en-us/library/bb384865 (VS.100) .aspx): 'Assert :: AreEqual (marshal_as (s1), marshal_as (s2), L" Nombre de objeto inesperado ");'. +1 sin embargo, creo que su solución alternativa es creativa. : -] –
ildjarn