13

Czy można przekazywać wartości testu wieloznacznego wildcard do wiersza polecenia mstest.exe, a nie ręcznie ręcznie kodować wiele wartości testcontainer? Takich jaksymboli wieloznacznych pojemników do mstest. exe

Mstest.exe/testcontainer: testy .dll

ja chcący wywołać ręcznie w naszych MSTest TFS 2012 uaktualnienie template.xaml budować processso pewno spieprzy twoje zachowuje się jak sposób autoodkrywanie podobna do testów uruchomionych domyślnie template.xaml

Jeśli nie, to można to zapisać w skrypcie nietoperza, aby zapętlić foldery z danego folderu startowego?

Odpowiedz

24

MSTest nie przyjmuje parametru wieloznacznego dla testucontainer (look here for a reference on the command line options). Może jednak przyjąć wiele argumentów/testcontainer:

mstest.exe /testcontainer:a.test.dll /testcontainer:b.tests.dll 

Będziesz musiał podać ten parametr w inny sposób. Można to zrobić za pomocą pliku wsadowego, ale MSBuild może być lepszym wyborem do tego:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="RunMSTest"> 

<ItemGroup> 
    <TestAssemblies Include="**\*Tests.dll"/> 
</ItemGroup> 

<Target Name="RunMSTest"> 
    <Exec Condition=" '@(TestAssemblies)' != ''" 
      Command="Mstest.exe @(TestAssemblies ->'/testcontainer:&quot;%(RecursiveDir)%(Filename)%(Extension)&quot;', ' ')" 
      /> 
</Target> 

</Project> 

(z podziękowaniami do https://stackoverflow.com/a/2770682/62662 do przekształcenia)

Zachowaj I do pliku (testall.proj), a bieg to z MSBuild testall.proj lub utwórz plik wsadowy, aby go uruchomić.

Należy również zauważyć, że mstest ładuje wszystkie dostarczone elementy testowe w jednej domenie aplikacji, więc będą one musiały obsługiwać ten sam cel platformy (dowolny procesor, x86, x64).

+0

Myślę, że transformacja może być prostsze po prostu chwytając Tożsamość właściwość każdego zespołu. Miałem także problem ze ścieżkami (pliki testowe nie znajdują się bezpośrednio poniżej miejsca przechowywania pliku celu), co rozwiązało ten problem.

3

Możliwe jest również użycie cmd plik do zbierania pojemników przez wildcard w pojedynczej zmiennej, a następnie uruchomić MSTest z tej zmiennej rozszerzonym:

call "%VS100COMNTOOLS%vsvars32" 
@setlocal enabledelayedexpansion enableextensions 
@set list= 
@for %%x in (.\Bin\Debug\*Test.dll) do set list=!list! /testcontainer:%%x 
@set list=%list:~1% 

mstest %list% 
+1

czy istnieje maksymalna długość wiersza poleceń? jeśli istnieją setki testowych bibliotek dll, czy nadal będzie działać? –

Powiązane problemy