Mam test, który wymaga wczytania pliku XML, a następnie jego przeanalizowania. Jak mogę za każdym razem skopiować ten plik do folderu uruchamiania testowego?
Plik XML jest ustawiony na „Kopiuj, jeśli nowszy” i tryb kompilacji na „brak” (ponieważ tak naprawdę nie jest to możliwe do kompilacji)
visual-studio
mstest
Aaron Powell
źródło
źródło
Wygląda na to, że jeśli dostarczysz plik TestSettings dla rozwiązania, możesz odznaczyć opcję „Włącz wdrożenie” i zatrzymać próbę uruchomienia programu mstest z
...TestResults\...\out
folderu, w którym nie kopiuje dodatkowych plików (chyba że ustawisz je jako opcję wdrażania) .Jest to również przydatne, jeśli polegasz na tym, że dodatkowe pliki znajdują się w zachowanej strukturze folderów, ponieważ wszystkie elementy wdrożenia wydają się być kopiowane bezpośrednio (płasko) do folderu tymczasowego uruchamiania (na zewnątrz), jeśli używasz opcji Wdrożenie, dodaj folder w ustawieniach testowych ( powyższe odpowiedzi sugerują, że możesz zachować strukturę, jeśli dodasz każdy element jako własny element DeploymentItem).
Dla mnie działało dobrze, uruchamiając testy bezpośrednio w Visual Studio (tj. Moje dodatkowe pliki w ich strukturze zostały znalezione i wykorzystane przez testy), ponieważ utworzyłem plik TestSettings z innego powodu dawno temu (który ma odznaczone Włącz wdrożenie), ale nie wtedy, gdy TeamCity uruchomiłem mstest, aby uruchomić testy, ponieważ nie określiłem, że powinien być używany plik TestSettings.
Aby utworzyć plik TestSettings w programie Visual Studio, kliknij prawym przyciskiem myszy rozwiązanie i wybierz opcję Nowy element, a następnie wybierz szablon TestSettings. Aby użyć pliku TestSettings w wierszu polecenia mstest.exe, dodaj opcję
/testsettings:C:\Src\mySolution\myProject\local.testsettings
(lub dodaj jako dodatkową opcję wiersza poleceń w TeamCity z odpowiednią ścieżką)źródło
Odpowiedź Preet służy do rozmieszczania elementów w jednym teście. Jeśli chcesz to zrobić na poziomie rozwiązania, użyj ustawień .testrunconfig .
źródło
Najlepszym rozwiązaniem dla mnie jest użycie ustawień testowych, zwłaszcza jeśli wiele testów wymaga tych samych plików danych.
Najpierw utwórz plik testsettings i dodaj potrzebne elementy wdrożenia (nazwa pliku lub folderu):
Uruchomiony w programie Visual Studio, użyj opcji „wybierz plik ustawień testu” z menu „Test \ Ustawienia testu”, aby wybrać nowe ustawienia testu
Uruchamiając mstest, użyj parametru / testsettings, aby mstest użył ustawień testsettings.
źródło
Możesz zdefiniować DeploymentItem w klasie, która zawiera metodę z atrybutem AssemblyInitialize. Wtedy masz pewność, że pliki są kopiowane niezależnie od tego, który test uruchomisz.Niestety atrybut DeploymentItem jest wykonywany tylko na klasach, które zawierają uruchomione testy. Więc jeśli masz 10 klas testowych, które używają tego samego zestawu plików, musisz dodać atrybut do wszystkich z nich.
Dowiedział się również, że zmiany w plikach * .testsettings nie są automatycznie odświeżane w programie Visual Studio. Dlatego po dodaniu plików / folderów do wdrożenia w testsettings, musisz ponownie otworzyć plik rozwiązania, a następnie uruchomić testy.
źródło
W programie Visual Studio 2012 vstest.console.exe (wbudowany moduł uruchamiający testy) działa z katalogiem wyjściowym jako bieżącą ścieżką. Oznacza to, że wystarczy uwzględnić elementy w rozwiązaniu z właściwością „Zawsze kopiuj” lub „Kopiuj, jeśli nowszy”, aby mogły zostać użyte w teście. Nie potrzebujesz atrybutu DeploymentItem w przypadku ogólnym. To samo dotyczy uruchamiania programu vstest.console.exe z wiersza poleceń w katalogu output / test.
W niektórych przypadkach używany jest oddzielny folder, a jednym z nich jest użycie atrybutu DeploymentItem. Więcej informacji znajdziesz tutaj .
źródło