2015-09-15 15 views
8

Używam NUnit 3.0 i TestFixtureSource do uruchamiania przypadków testowych wewnątrz urządzenia wiele razy z różnymi parametrami/konfiguracjami (chcę to zrobić na poziomie TestFixture). Prosty przykład:Nunit3 jak zmienić nazwę testcase na podstawie parametrów przekazanych z TestFixtureSource

[TestFixtureSource(typeof (ConfigurationProvider))] 
public class Fixture 
{ 
    public Fixture(Configuration configuration) 
    { 
     _configuration = configuration; 
    } 

    private Configuration _configuration; 

    [Test] 
    public void Test() 
    { 
     //do something with _configuration 
     Assert.Fail(); 
    } 
} 

Powiedzmy test() nie powiedzie się z jednego z konfiguracjami i udaje się do innego. W pliku raportu uruchamiania iw Eksploratorze testów programu Visual Studio nazwa zarówno dla zakończonych niepowodzeniem, jak i dla następnych zostanie wyświetlona jako tylko Test(), która nie mówi mi nic o tym, która konfiguracja spowodowała problemy.

Czy istnieje sposób wpływania na nazwy przypadków testowych w tej sytuacji (tj. Przedrostek jego nazwy na przebieg/konfigurację urządzenia)? W celu obejścia tego problemu obecnie drukuję do wyników wyjściowych przed każdym przypadkiem testowym, ale wolałbym tego uniknąć.

Ponieważ NUnit 3.0 jest w wersji beta i ta funkcja jest całkiem nowa, nie mogłem znaleźć niczego w dokumentach. Znalazłem TestCaseData, ale nie sądzę, że jest on przystosowany do tego, aby był jeszcze używany z urządzeniami (jest przeznaczony dla przypadków testowych).

Odpowiedz

2

Nie mogę znaleźć sposobu na zmianę nazwy testowej, ale nie powinno to być konieczne, ponieważ NUnit3 konstruuje testname, dołączając opis testfixture.

Przykład klasa Fixture z pytaniem może być stosowany bez zmian, jeżeli Configuration i ConfigurationProvider ma implementację takiego:

public class Configuration 
{ 
    public string Description { get; } 

    public Configuration(string description) 
    { 
     Description = description; 
    } 

    public override string ToString() 
    { 
     return Description; 
    } 
} 

public class ConfigurationProvider : IEnumerable 
{ 
    public IEnumerator GetEnumerator() 
    { 
     yield return new Configuration("Foo"); 
     yield return new Configuration("Bar"); 
     yield return new Configuration("Baz"); 
    } 
} 

The „trik” jest upewnienie się, konstruktora parametr aby urządzenie jest ciąg lub ma metodę ToString -metodę, która daje sensowny opis urządzenia.

Jeśli używasz NUnit 3 adapter testowy w Visual Studio, a następnie testfixtures będą wyświetlane jako Fixture(Foo), Fixture(Bar) i Fixture(Baz), dzięki czemu można łatwo odróżnić ich testów. Xml-wyjściowy z nunit3-console.exe również używa nazw opisowych, fx: fullname=MyTests.Fixture(Bar).Test

<test-case id="0-1003" name="Test" fullname="MyTests.Fixture(Bar).Test" methodname="Test" classname="MyTests.Fixture" runstate="Runnable" result="Failed" ... > 
    <failure> 
     <message><![CDATA[]]></message> 
     <stack-trace><![CDATA[at MyTests.Fixture.Test() in ... ]]></stack-trace> 
    </failure> 
    ... 
</test-case> 

Using NUnit 3 Test Adapter in Visual Studio

0

Jednym ze sposobów wykonywania takich czynności jest mieć znajdowania i zamieniania tokenów w kodzie źródłowym i dynamicznie kompilacja bibliotek testowych przed wykonaniem przy użyciu wiersza polecenia msbuild. kroki wysokiego szczebla są

  1. Definiowanie nazw przypadku testowego jako sometest_TOKEN w źródle następnie za pomocą narzędzi wiersza poleceń jak fnr.exe Podczas wymiany, _TOKEN z cokolwiek chcesz. Na przykład: sometest_build2145.
  2. Skompiluj bibliotekę dll przy użyciu msbuild na przykład msbuild/t: Przebuduj mytestproj.sln. Następnie wykonaj wszystkie testy w mytestproj.dll.
Powiązane problemy