Если вы уверены, что ваш набор тестов не будет «прерван» в середине теста, вы можете использовать методы FixtureSetup и FixtureTeardown, чтобы установить, а затем удалить измененные переменные среды.
РЕДАКТИРОВАТЬ ИЗ КОММЕНТАРИИ: Я вижу, откуда вы, но как и в моем редактировании, UT-фреймворк предназначен для создания модульных тестов.Концепция модульного теста предполагает, что он НЕ должен зависеть от каких-либо внешних ресурсов, включая переменные среды.Тесты, которые делают это, являются интеграционными тестами и требуют наличия большого количества инфраструктуры (и обычно они занимают много раз дольше, чем наборы модульных тестов с одинаковым LOC).
Чтобы создать модуль проверка кода, который зависит от переменной среды, рассмотрите возможность разделения строк кода, которые непосредственно проверяют переменные среды.и поместите это в метод другого класса, а затем смоделируйте этот класс с помощью RhinoMocks или чего-либо еще, чтобы предоставить «фиктивное» значение для тестирования без проверки (или изменения) реальных переменных среды.
Если это действительно интеграционный тести вам действительно нужен набор переменных среды (скажем, вы меняете путь, чтобы вы могли использовать Process.Start для вызова своего собственного notepad.exe вместо Windows), для этого нужны методы / атрибуты FixtureSetup и FixtureTeardown;выполнить сложную настройку фиксированной, повторяемой среды, в которой тесты должны быть успешными, и затем вернуть среду в исходное состояние независимо от того, что произошло в тестах.Обычно в случае сбоя теста возникает исключение и немедленно завершается выполнение этого теста, поэтому выполнение кода в конце самого метода теста не гарантируется.