Poniższe działa w VS2012 dla projektów testowych zawartych w wielu rozwiązaniach bez użycia pliku ustawień testowych:
1) Ułóż pliki i foldery, które chcesz wdrożyć, w folderze w katalogu projektu testowego.
2) We właściwościach projektu utwórz krok po kompilacji
xcopy /Y /S /i "$(ProjectDir)<Project_Folder_Name>\*" "$(TargetDir)<Deployment_Folder_Name>"
$(ProjectDir)
i $(TargetDir)
są to makra, które będą interpretowane przez VS i jako takie powinny być uwzględnione.
<Project_Folder_Name>
to nazwa folderu utworzonego w kroku 1.
<Deployment_Folder_Name>
to nazwa folderu, w którym zostaną wdrożone pliki testowe, i powinna zostać nazwana tak, aby była unikalna, gdy wiele projektów testowych jest wdrażanych w tym samym katalogu, np <Project_Name>_TestInputs
.
Pliki testowe w udostępnionych lokalizacjach należy również skopiować do folderu wdrażania katalogu docelowego, aby ograniczyć interakcje testowe. Podaj ścieżkę źródłową względem $(ProjectDir)
makra. Na przykład "$(ProjectDir)..\..\Common Files\C1219TDL-2008.xml"
.
3) Dodaj [DeploymentItem(source, destination)]
właściwość do każdej metody testowej, która używa pliku wdrożenia (najlepsze rozwiązanie) lub do klasy testowej (łatwiejsza praktyka dla leniwych lub spieszących się, a najłatwiejszy sposób zaktualizowania projektu poprzednio używane ścieżki względne lub plik ustawień testowych ).
W metodzie testowej source
jest ścieżką do pliku lub katalogu używanego w metodzie testowej względem katalogu docelowego utworzonego przez xcopy
i destination
jest ścieżką do katalogu, w którym zostanie utworzony, względem katalogu wdrażania. Aby testy działały spójnie w katalogu docelowym lub w katalogu wdrożeniowym. Ścieżka docelowa powinna być taka sama jak ścieżka źródłowa bez odwołania do pliku. Przykład: [DeploymentItem("Example_TestInputs\C1219TDL-2008.xml","Example_TestInputs")]
. DeploymentItem
Powinny być zawarte w każdej metodzie, która wykorzystuje ten plik lub katalog.
W klasie source
i destination
oba są nazwą folderu utworzonego w katalogu docelowym przez xcopy
; spowoduje to skopiowanie całego folderu do katalogu wdrożeniowego po uruchomieniu dowolnego testu w klasie. Przykład:[DeploymentItem("Example_TestInputs","Example_TestInputs")]
4) W metodach testowych możesz teraz uzyskiwać dostęp do plików i katalogów z pewnością, że będą one w katalogu roboczym niezależnie od tego, gdzie Visual Studio zdecydowało się to umieścić tego dnia, np File.Exists(".\Example_TestInputs\C1219TDL-2008.xml")
.