Проблемы с глобальными переменными, влияющими на результаты модульного теста - PullRequest
0 голосов
/ 12 июня 2018

Я создал модульный тест с собственным модульным тестовым проектом в Visual Studio 2017 для встроенного программного обеспечения , написанного в коде C .Программное обеспечение имеет много параметров, которые глобальные переменные , которые доступны из всей системы.

Это создает проблемы, которые модульный тест, например, контроль топлива, также влияет на блок управления двигателемтестовое задание.Если я запускаю модульный тест отдельно, он работает как задумано.

Поэтому у меня вопрос: есть ли простой способ перезапустить приложение, когда тест выполняется между методами?Так что я могу лучше контролировать параметры, которые изменились, и мне не нужно беспокоиться о добавлении новых методов, влияющих на существующие примеры модульных тестов.

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Я предполагаю, что вы ищете решение, которое не требует переделки вашего кода.

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

Я использовал этот метод в другом контексте ранее, однако я не знаю, можно ли запустить в режиме отладки для встроенных приложений.В этом случае не забудьте перекомпилировать приложение после тестирования, чтобы удалить параметр -g.

0 голосов
/ 12 июня 2018

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

Таким образом, вы вызываете функцию в начале каждого теста:

 SetGlobals( struct { a = ....}), 

, где вы передаете структуру, содержащую все переменные, которые вас интересуют.

Тогда каждый тест должен иметь согласованное поведение, и все переменные будут сбрасываться на правильные значения между тестами.(Конечно, у вас все еще будет проблема, если вы попытаетесь запустить многопоточность у тестера)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...