Есть ли способ изолировать приложение от переменных среды для тестирования кода?

650
hazrmard

Я разрабатываю приложение для Windows, которое использует DLLфайлы, доступные в системной PATHпеременной. Те DLLв моем PATHдля моей среды разработки. Однако само приложение переносимо и поставляется со своими собственными зависимостями. Есть ли способ скрыть переменные среды от приложения / процесса, чтобы я мог проверить свой код на переносимость, не изменяя глобальные переменные?

0
Вы можете создать другого пользователя для тестирования, войти в другую учетную запись и попробовать, если это работает. Другое более полное решение - создать виртуальную машину с новой установкой Windows и протестировать там все fernando.reyes 7 лет назад 0
Используйте одну из бесплатных виртуальных машин Windows от Microsoft Ramhound 7 лет назад 1
Вероятно, лучшим решением будет макетирование, если ваша среда разработки подходит: http://stackoverflow.com/questions/2665812/what-is-mocking Frank Thomas 7 лет назад 0

2 ответа на вопрос

1
Alex

Создайте файл bat / cmd и переопределите PATH, затем запустите приложение из того же файла bat / cmd

@echo off  Path=C:\TestPath  REM test it that is was overridden  echo %Path%  REM Lunch your app below c:\path\to\your\app.exe 
0
hazrmard

Ответ Алекса был полезен. Я преобразовал это в функцию PowerShell, которую я могу добавить в свою, $profileчтобы она всегда была доступна:

function sandbox { Write-Output "$args" $tempPATH = $env:PATH $env:PATH = "" if ("$args"[0] -eq '"') { iex "& $args" } else { iex "$args" } $env:PATH = $tempPATH } 

Так что теперь, когда я вызываю sandbox SOME_COMMAND, функция очищает PATH, запускает команду и восстанавливает переменную обратно.