В настоящее время мы пытаемся добавить модульное тестирование в наше приложение c ++. Приложение состоит из 30 проектов, которые генерируют 29 DLL и 1 EXE. Мы используем MSTest для запуска нашего модульного теста, так как он уже включен в Visual Studio 2010.
Отлично работает для класса, который объявлен "публичным". Эти классы имеют это в начале:
#ifdef RESEAU_IMPL
#define CLASS_DECL _declspec(dllexport)
#else
#define CLASS_DECL _declspec(dllimport)
#endif
Но для всех остальных классов (90% кода) они не объявлены публичными, поэтому мы не можем использовать их в нашем тесте.
Я читал в Google об атрибуте InternalVisibleTo, но, похоже, он работает только со сборкой c # .NET. Я прав? Я также читаю, чтобы объявить мой класс "as_friend", но я не уверен, где это поставить.
Итак, вкратце: я хочу протестировать класс, который не экспортируется / не публикуется в DLL. Как мне это сделать?
Спасибо
* РЕДАКТИРОВАТЬ *
Гишу заметил, что модульное тестирование невозможно в неуправляемом коде, но возможно. Видите, это TestMethode, который тестирует собственный код C ++. CVersion находится в C ++ MFC.
[TestMethod]
void AssignationCVersion()
{
CVersion version1234(1,2,3,4);
CVersion version4321(4,3,2,1);
Assert::IsTrue(version1234 != version4321);
version1234 = version4321;
Assert::IsTrue(version1234 == version4321);
};
Но то, что кажется невозможным, - это использовать специальный тег для проверки внутренней функции. Я первый согласен с тем, что тестирование внутреннего метода не является хорошей практикой, но эти DLL не являются служебными функциями, а являются частью "настоящего" приложения. (возможно, это плохой дизайн, но это было сделано 15 лет назад). У кого-нибудь есть идеи на эту тему?