Возможно ли протестировать "внутренний" класс из c++ dll с помощью MSTest?

В настоящее время мы пытаемся добавить модульное тестирование в наше приложение на c++. Приложение состоит из 30 проектов, которые генерируют 29 dll и 1 exe. Мы используем MSTest для запуска наших модульных тестов, поскольку он уже включен в Visual Studio 2010.

Он отлично работает для классов, которые объявлены как "public". У этих классов в начале написано:

#ifdef RESEAU_IMPL
    #define CLASS_DECL      _declspec(dllexport)
#else
    #define CLASS_DECL      _declspec(dllimport)
#endif 

Но для всех остальных классов (90% кода) они не объявлены публичными, поэтому мы не можем использовать их в нашем тесте.

Я читал в google об атрибуте InternalVisibleTo, но похоже, что он работает только в сборке c# .NET. Я прав? Я также прочитал, что нужно объявить свой класс "as_friend", но я не уверен, куда его поместить.

Итак, вкратце: Я хочу протестировать класс, который не экспортирован/публичен в DLL. Как мне это сделать?

Спасибо

* EDIT *

Gishu прокомментировал, что Unit Testing невозможно в неуправляемом коде, но это возможно. Смотрите, это 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 лет назад). У кого-нибудь есть идеи по этому поводу?

8
задан Jean-François Côté 14 October 2011 в 11:52
поделиться