2010-05-27 22 views
5

Mam kilka testów, które uruchamiam z funkcją ReSharpers "Uruchom wszystkie testy od rozwiązania". Jedna z testowanych klas ma zależność od pliku w tym samym folderze, co zawierający go zestaw. Ten plik jest kopiowany do katalogu wyjściowego przez MSBuild (ustaw "Copy To Output Directory" na "Copy all").Jak uzyskać dostęp do plików projektu z testów NUnit

Problem: Testy nie są uruchamiane z normalnego katalogu wyjściowego montaż, lecz pewną tymczasową lokalizację w moim profilu użytkownika.

Dlatego tak naprawdę nie wiem, gdzie szukać pliku - biegacz testu nie kopiuje go tam. Czy mogę go zmusić?

Odpowiedz

4

Wygląda na to, że przeprowadzasz testy z włączoną opcją kopiowania w tle.

Przejdź do Resharper-> Opcje i wybierz zakładkę Testowanie jednostek (z prawej strony u dołu listy). Usuń zaznaczenie "Testowane zestawy kopii w tle" i spróbuj ponownie.

+0

na miejscu :) dzięki! –

+0

Bardzo ładna odpowiedź, ale Shadow Copy to całkiem fajna funkcja, którą znajduję. Alternatywny sposób bez ręcznego kopiowania pliku z konfiguracji urządzenia? – Wernight

6

Witryna NUnit zaleca w tym przypadku użycie właściwości Assembly.CodeBase, która prowadzi do potrzebnego bin/debug.

"Uwaga: Jeśli masz ochotę wyłączyć kopiowanie w tle w celu uzyskania dostępu do plików w tym samym katalogu, co zestaw, powinieneś wiedzieć, że istnieją alternatywy. Możesz rozważyć użycie właściwości Assembly.Codebase zamiast Assembly.Location. "

.Location powrócił Uri adres Styl "file: //// D: // Projekty ...", więc rzeczywisty kod Kiedyś był

string applicationDirectory = new Uri(Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase)).LocalPath; 
+0

Czy możesz umieścić link do strony, na której znalazłeś ofertę? – blachniet

+0

To jest ich dokumentacja. Strona dla aktualnej wersji to [http://www.nunit.org/index.php?p=settingsDialog&r=2.6.1](http://www.nunit.org/index.php?p=settingsDialog&r=2.6. 1). Rozdział strony to "Ustawienia testowego programu ładującego - zaawansowane", szczegóły dotyczące "Kopii w tle". – Roman

+0

Miałem taki sam wynik z włączoną opcją kopiowania w tle lub bez niej, więc musiałem wybrać to rozwiązanie i stworzyć absolutną ścieżkę dla wszystkich plików testowych za pomocą 'Path.Combine (applicationDirectory, fileName)'. – furier

Powiązane problemy