Wraz z rozwojem naszego projektu rośnie liczba testów. Możemy je pogrupować stosując atrybut [Trait].

Do solucji TestingPatterns dodamy nowy katalog o nazwie Trait:

 

Rys. 1. Struktura solucji

Stworzymy w nim kilka prostych klas z zestawami testów:

 

Rys. 2. Zestawy testów

W każdym zestawie dodajmy kilka testów.
Zobaczmy przykładowy zestaw testów:

using Xunit;

namespace xUnitFeatures.Trait
{
    public class DomainTestSuiteOne
    {
        [Fact]
        public void DataBase_DomainTestSuiteOne_Test_1()
        {
            Assert.True(true);
        }

        [Fact]
        public void DataBase_DomainTestSuiteOne_Test_2()
        {
            Assert.True(true);
        }

        [Fact]
        public void DataBase_DomainTestSuiteOne_Test_3()
        {
            Assert.True(true);
        }

        [Fact]
        public void DataBase_DomainTestSuiteOne_Test_4()
        {
            Assert.True(true);
        }
    }
}

Po uruchomieniu testów w Test Explorer Visual Studio zobaczymy następujący rezultat:

 

Rys. 3. Testy w każdym z zestawów

Jak widzimy w Test Explorer Visual Studio testy podzielone są zgodnie z Test Suit.
Dodajmy teraz atrybut [Trait()] do klas z testami:

    [Trait("Domain", "Patient")]
    public class DomainTestSuiteOne
    {
  	 ….
    }
    [Trait("Domain", "Patient")]
    public class DomainTestSuiteTwo
    {
  	 ….
    }
[Trait("Category", "DataBase")]
    public class DataBaseTestSuiteOne
    {
      …
    }	
[Trait("Category", "DataBase")]
    public class DataBaseTestSuiteTwo
    {
      …
    }	

W Test Explorer Visual Studio klikamy prawym przyciskiem myszy na ekran, następnie wybieramy z menu kontekstowego opcje Group By -> Triats

 

Rys. 4. Grupowanie po Trait

Zaznaczenie Show Test Hierarchy powoduje wyłączenie opcji Group By w menu kontekstowym.

 

Rys. 5. Brak opcji Group By w menu kontekstowym Test Explorer Visual Studio

Po włączeniu Group By -> Triats w Test Explorer Visual Studio zobaczymy następujący rezultat:

 

Rys. 6. Pogrupowane testy

Podzieliłem testy na dwie kategorie [Trait(“Category”, “DataBase”)] oraz [Trait(“Domain”, “Patient”)].

Używając ”Category” jako name w atrybucie Trait nie zobaczymy go w ReSharper Test Runner

Uporządkowanie testów według kategorii w ReSharper Test Runner odbywa się po kliknięciu w menu Options-> Group by:-> Categories

 

Rys. 7. Włączenie grupowania w ReSharper Test Runner

Po włączeniu grupowania zobaczymy następujący rezultat:

 

Rys. 8. Testy podzielone na kategorie w ReSharper Test Runner

ReSharper Test Runner pominął nazwę ”Category”.

W przypadku rosnącej liczby testów atrybut [Trait()], może nam znacząco pomóc przy ich organizacji w grupy.