2014-03-07 10 views
7

In meiner csproj Datei Ich habe ein Testziel definiert, die xunit Tests in einer bestimmten DLL auszuführen verwendet wird:Wie lässt man xUnit Runner nur Tests in bestimmten Klassen ausführen?

<UsingTask AssemblyFile="..\packages\xunit.1.9.2\lib\net20\xunit.runner.msbuild.dll"  TaskName="Xunit.Runner.MSBuild.xunit" /> 
    <Target Name="Test"> 
    <xunit Assembly="bin\Debug\My.Project.dll" /> 
</Target> 

Das funktioniert gut, aber ich würde in sicher, dass nur Tests angeben zu können, wie Klassen sollten ausgeführt werden. Ist das möglich?

Antwort

9

Sie können die Task xunit für eine Exec Task wechseln und den XUnit Console Runner, xunit.console.clr4.exe, ausführen. Dies hat Befehlszeilenoptionen zum Angeben von 'Eigenschaften', die ausgeführt werden sollen. Dies sind Name-Wert-Paare, die auf Tests zugeordnet werden können, indem die Verwendung von TraitAttribute:

[Trait("TraitName", "TraitValue")] 
    public void MyTest(){ /*..*/ } 

Aus dem Gebrauchstest für die Konsole Läufer:

Valid /trait "name=value" : only run tests with matching name/value traits : if specified more than once, acts as an OR operation /-trait "name=value" : do not run tests with matching name/value traits : if specified more than once, acts as an AND operation

+2

Sie auch -Methode Parameter mit einer vollständigen Methode verwenden Name zB: 'xunit.console.clr4.exe -method Namespace.ClassName.MethodName' –

+5

@aguafrommars, mit V2 veröffentlicht, es ist noch einfacher:' xunit.console.exe -klasse 'Namespace.ClassName''. – MEMark