2013-03-06 17 views
5

Mam projekt testowy Coded-UI, który zawiera odwołania do innych zestawów w roztworze. W jakiś sposób niektóre zestawy nie są kopiowane do katalogu TestResults/Out, podczas gdy inne są kopiowane. Wszystkie zestawy mają opcję true (nie wiem, czy to naprawdę ważne) i są absolutnie równe w innych opcjach. Wszystkie złożenia są kopiowane, gdy uruchamiam test lokalnie z VS2010, ale nie na serwerze kompilacji.Program TFS nie wdraża zestawu odwołań do testowania dir, gdy na serwerze kompilacji

Jeśli użyję atrybutu [DeploymentItem], aby wymusić wdrożenie tych "niegrzecznych" zespołów, zostaną one pomyślnie wdrożone.

nie mogę go - Zawsze uważałem, że jeśli odwołać montaż (w References części Solution Explorer), że montaż zostanie skopiowany do TestResults/Out i [DeploymentItem] jest potrzebne, aby skopiować niektóre .xml i inne pliki konfiguracyjne.

+0

Jaki jest związek tych zespołów do swojego projektu - są one wystawać referencje lub statycznie połączone (bibliotek 3rd party, etc)? – bryanbcook

+0

Są to odniesienia do projektu. – nikita

Odpowiedz

11

Widziałem to już wcześniej. Twój projekt testowy odwołuje się do innych projektów, ale po uruchomieniu testów zauważysz, że złożeń nie ma w folderze TestRun Out.

W przeciwieństwie do innych biegaczy testowych, które uruchamiają testy jednostkowe ze stałej lokalizacji, MSTest kopiuje wymagane złożenia do folderu z uruchomionym testem, w którym wykonywane są testy. Konstrukcja umożliwia porównanie wyników testów, zasięgu, wyników między kolejnymi testami.

Wspólna nieporozumieniem jest to, że jakoś ustawienia kompilacji jak „Kopia lokalna” jakoś wpłynąć który Zależności są wykorzystywane do testowania, który jest po prostu nieprawda. MSTest korzysta z odbicia w celu ustalenia referencji zespołu, które są wymagane do uruchomienia testu.

Błąd, który widzisz, jest prawdopodobnie spowodowany przez odniesienie do zespołu, ale zespół testowy nie używa go bezpośrednio. Możesz to sprawdzić, korzystając z narzędzia inspekcji IL (DotPeek, Reflector, itp.), Aby przejrzeć odniesienia do zespołu testowego. (Jest to często problem w projektach WPF odwołujących się zespołów w XAML).

Aby naprawić, albo użyć DeploymentSettings skopiować zespół do folderu wyjściowego; lub użyj zestawu w projekcie testowym. Na przykład dodanie następujących do projektu testowego wyemituje IL który zapewnia zespół jest wdrażany:

var type = typeof(AssemblyNotBeingCopied.MyClass); 
+1

Dzięki za sugestię, ale to nie pomogło. Dodałem instrukcje 'typeof' do metody testowania, ale' MSTest' nadal nie wdraża kilku zestawów. – nikita

+1

Pracowałem dla mnie. Sprawdź, czy typ, do którego się odwołujesz, znajduje się w zespole, który chcesz wczytać. –