Próbuję wykonać test jednostki na niektóre kodu C++, ale mam pewne problemy.Dlaczego Assert :: AreEqual w ramach VS UnitTesting nie działa ze std :: string?
Mam coś podobnego do następujących linii kodu ...
std::string s1 = obj->getName();
std::string s2 = "ExpectedName";
Assert::AreEqual(s1, s2, "Unexpected Object Name");
A ja otrzymuję następujący błąd kompilatora ...
error C2665: 'Microsoft::VisualStudio::TestTools::UnitTesting::Assert::AreEqual' :
none of the 15 overloads could convert all the argument types
Wydaje się, że powinna być zgadza się z the following overload:
AreEqual<(Of <(T>)>)(T, T, String)
nie Czy powyższe przeciążenie przeciążenie szablon która powinna obsługiwać dowolny obiekt, o ile argumenty 1 i 2 są tego samego typu? Czy może czegoś brakuje?
Czy jest jakiś inny sposób, w jaki mogę to osiągnąć?
Innym obejściem (tylko dla ciągów bez dodatkowego wysiłku) byłoby użycie [wbudowanej biblioteki gromadzącej dane] (http://msdn.microsoft.com/en-us/library/bb384865 (VS.100) .aspx): 'Assert :: AreEqual (marshal_as (s1), marshal_as (s2), L" Nazwa nieoczekiwanego obiektu ");'. +1, myślę, że twoje obejście jest kreatywne. : -] –
ildjarn