Подтвердить что ты не робот

Любой способ ускорить модульное тестирование в Visual Studio 2015 для UWP

При тестировании библиотеки классов Universal Universal (.NET 4.6) в Visual Studio 2015 время, требуемое в цикле "red- > green- > refactor", довольно длительное. Мой тестовый проект - это стандартный проект MSTest "Unit Test App". Даже в простейшем сценарии совершенно нового решения, новых объектов и тестовых проектов и базового метода int Add(int n1, int n2) он занимает около 8-15 секунд. Это время (после внесения небольшого изменения кода), нажав "запустить тест" до тех пор, пока не будет показан проход/сбой.

На моей машине (Win 10 pro), проводя такой же эксперимент, но с решением на основе WPF получается около 1-2 секунд.

В сценарии UWP фактическое время тестирования указано как 79 мс. В остальное время выполняется компиляция и развертывание контейнера приложений unit test.

Есть ли способ значительно ускорить TDD с UWP?

4b9b3361

Ответ 1

Причина, по которой цикл TDD занимает много времени, заключается в том, что весь код UWP должен запускаться в AppContainer, и для этого требуется медленная упаковка и развертывание.

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

Решением для этого является использование переносимой библиотеки классов для вашей логики приложения вместо библиотеки классов UWP. В новом диалоговом окне проекта вы найдете переносимую библиотеку классов:

введите описание изображения здесь

Настройки по умолчанию должны работать:

введите описание изображения здесь

Затем вам нужно добавить ссылку из UWP в переносную библиотеку, чтобы ее можно было использовать. Чтобы протестировать переносимую библиотеку, используйте обычный проект без UWP unit test:

введите описание изображения здесь

Примечание. Для выполнения этой работы вам необходимо изменить целевую структуру проекта unit test с 4.5.2 (по умолчанию) до 4.6.

Любой unit test, который вы запускаете из обычного проекта unit test, будет выполняться как можно быстрее, так как он не должен запускаться в AppContainer. Я проверил это, и скорость внутреннего цикла была отличной. Надеюсь, что это поможет!