Как написать модульные тесты Visual Studio для частного слоя модели C ++ в приложении MVVM Windows Store?

Я нахожусь в процессе написания довольно сложного приложения для Магазина Windows. Чтобы сохранить код поддерживаемым, я хотел бы хорошо использовать модульные тесты. Пока что мои решения состоят в следующем:

  1. Проект C # / XAML для самого приложения и слоя представления
  2. Проект Магазина Windows C ++, в котором уровень ViewModel состоит из управляемых классов ссылок WinRT, а уровень модели является прямым C ++ и полностью скрыт от уровня представления.
  3. Проект модульного тестирования Магазина Windows C # для тестирования слоя ViewModel.
  4. Проект C ++ для выполнения некоторого DirectX-рендеринга (часть уровня представления и не очень подходит для этого поста)

Тестирование классов C ++ WinRT ViewModel с проектом C # работает нормально. Неважно, что это другой язык, потому что все общедоступно и использует интерфейс WinRT.

Тем не менее, для тестирования классов слоя модели я не уверен, что делать. Я хотел бы, чтобы мои тестовые случаи были в отдельном проекте, но я не уверен, возможно ли это вообще. Я хочу сохранить здесь все стандарт C ++ по причинам переносимости. Кроме того, я стараюсь скрыть все, чтобы придерживаться строгого дизайна MVVM.

Как мне написать модульные тесты Visual Studio (например, те, которые находятся в моей ViewModel «Библиотека модульных тестов (приложения Магазина Windows)») для моего стандартного уровня модели C ++?


Один из вариантов, на который я сейчас обращаюсь, — это создать «Native Unit Test Project» и использовать папку для моего проекта слоя модели в качестве каталога для этого. Похоже, я почти там, но я получаю «ошибка LNK2019: неразрешенный внешний символ». Как я могу построить файлы CPP для объектов, которые включены в тестовый проект.

4

Решение

Вы должны создать собственный тестовый проект C ++ для тестирования вашего бизнес-кода. Но есть несколько параметров проекта, которые необходимо изменить:

  1. Задавать включить путь к вашему бизнес-коду, особенно заголовочные файлы.
  2. Включить все файлы исходного кода в тестовом проекте. Или же вы получите жалобу компоновщика unresolved symbol error, так как только заголовочные файлы включены, но не реализации (* .Cpp).
  3. Связывайте / игнорируйте все библиотеки, которые нужны вашему бизнес-коду. (так же, как ваш производственный проект) Не забудьте установить правильный путь ссылки.

Это увеличит время компиляции (один и тот же код компилируется дважды), а также размер двоичного файла (весь бизнес-код должен быть скомпилирован / связан в тестовых двоичных файлах).

Но насколько я знаю, если ваш проект не является динамической / статической библиотекой, но исполняемый файл или какой-либо другой формат не может экспортировать символы, это единственный способ.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]