Gibt es eine Möglichkeit, eine Anwendung zum Testen von Code von Umgebungsvariablen zu isolieren?

718
hazrmard

Ich entwickle eine Anwendung unter Windows, die DLLDateien verwendet, die in der Systemvariablen verfügbar PATHsind. Diese DLLsind in meiner PATHfür meine Entwicklungsumgebung. Die Anwendung selbst ist jedoch portabel und wird mit ihren eigenen Abhängigkeiten ausgeliefert. Gibt es eine Möglichkeit, Umgebungsvariablen von einer Anwendung / einem Prozess zu verschleiern, damit ich meinen Code auf Portabilität testen kann, ohne globale Variablen ändern zu müssen?

0
Sie können zu Testzwecken einen anderen Benutzer erstellen, sich bei dem anderen Konto anmelden und versuchen, ob dies funktioniert. Eine vollständigere Lösung wäre, eine virtuelle Maschine mit einer neuen Windows-Installation zu erstellen und dort alles zu testen fernando.reyes vor 7 Jahren 0
Verwenden Sie eine der kostenlosen Windows-VMs von Microsoft Ramhound vor 7 Jahren 1
wahrscheinlich ist die beste Lösung ein Spott, vorausgesetzt, Ihre Entwicklungsumgebung ist geeignet: http://stackoverflow.com/questions/2665812/what-is-mocking Frank Thomas vor 7 Jahren 0

2 Antworten auf die Frage

1
Alex

Erstellen Sie eine bat / cmd-Datei und überschreiben Sie PATH. Anschließend mittagessen Sie Ihre Anwendung aus derselben bat / cmd-Datei

@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

Alex Antwort war hilfreich. Ich habe das in eine PowerShell-Funktion umgewandelt, die ich meiner hinzufügen kann, $profiledamit sie immer verfügbar ist:

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

Bei jedem Aufruf sandbox SOME_COMMANDleert sich die Funktion PATH, führt den Befehl aus und stellt die Variable wieder her.