Udostępnij za pośrednictwem


Słownik atrybutów

Atrybuty według przestrzeni nazw

PexAssumeNotNull

Ten atrybut potwierdza, że wartość zarządzana nie może mieć wartości null. Można go dołączyć do:

  • parametr metody testowej sparametryzowanej

    // assume foo is not null
    [PexMethod]
    public void SomeTest([PexAssumeNotNull]IFoo foo, ...) {}
    
  • pole

    public class Foo {
       // this field should not be null
       [PexAssumeNotNull]
       public object Bar;
    }
    
  • typ

    // never consider null for Foo types
    [PexAssumeNotNull]
    public class Foo {}
    

Można go również dołączyć do zestawu testowego, urządzenia testowego lub metody testowej; w takim przypadku pierwsze argumenty muszą wskazywać, które pole lub typ mają zastosowanie założenia. Gdy atrybut ma zastosowanie do typu, ma zastosowanie do wszystkich pól o tym typie formalnym.

PexClass

Ten atrybut oznacza klasę zawierającą eksploracje. Jest to odpowiednik atrybutu MSTest TestClassAttribute (lub NUnit TestFixtureAttribute). Ten atrybut jest opcjonalny.

Klasy oznaczone PexClass muszą być domyślnie skonstruowane:

  • typ eksportowany publicznie
  • konstruktor domyślny
  • nie abstrakcja

Jeśli klasa nie spełnia tych wymagań, zostanie zgłoszony błąd i eksploracja zakończy się niepowodzeniem.

Zdecydowanie zaleca się również, aby te klasy były częściowe , dzięki czemu narzędzie IntelliTest może wygenerować nowe testy, które są częścią klasy, ale w osobnym pliku. To podejście rozwiązuje wiele problemów ze względu na widoczność i jest typową techniką w języku C#.

Dodatkowy pakiet i kategorie:

[TestClass] // MSTest test fixture attribute
[PexClass(Suite = "checkin")] // fixture attribute
public partial class MyTests { ... }

Określanie typu testowego:

[PexClass(typeof(Foo))] // this is a test for Foo
public partial class FooTest { ... }

Klasa może zawierać metody oznaczone adnotacją PexMethod. Narzędzie IntelliTest rozumie również konfigurowanie i usuwa metody.

PexGenericArguments

Ten atrybut zawiera krotkę typu służącą do tworzenia wystąpienia ogólnego sparametryzowanego testu jednostkowego.

PexMethod

Ten atrybut oznacza metodę jako sparametryzowany test jednostkowy. Metoda musi znajdować się w klasie oznaczonej atrybutem PexClass .

Narzędzie IntelliTest wygeneruje tradycyjne, bez parametrów testy, które wywołają sparametryzowany test jednostkowy z różnymi parametrami.

Sparametryzowany test jednostkowy:

  • musi być metodą wystąpienia
  • musi być widoczna dla klasy testowej, w której są umieszczane wygenerowane testy zgodnie z Ustawienia Kaskadowy
  • może przyjmować dowolną liczbę parametrów
  • może być ogólny

Przykład

[PexClass]
public partial class MyTests {
     [PexMethod]
     public void MyTest(int i)
     { ... }
}

PexExplorationAttributeBase

Więcej informacji

PexAssemblySettings

Ten atrybut można ustawić na poziomie zestawu, aby zastąpić domyślne wartości ustawień dla wszystkich eksploracji.

using Microsoft.Pex.Framework;
// overriding the test framework selection
[assembly: PexAssemblySettings(TestFramework = "MSTestv2")]

PexAssemblyUnderTest

Ten atrybut określa zestaw, który jest testowany przez bieżący projekt testowy.

[assembly: PexAssemblyUnderTest("MyAssembly")]

PexInstrumentAssemblyAttribute

Ten atrybut służy do określania zestawu do instrumentowania.

Przykład

using Microsoft.Pex.Framework;

// the assembly containing ATypeFromTheAssemblyToInstrument should be instrumented
[assembly: PexInstrumentAssembly(typeof(ATypeFromTheAssemblyToInstrument))]

// the assembly name can be used as well
[assembly: PexInstrumentAssembly("MyAssemblyName")]

PexUseType

Ten atrybut informuje intelliTest, że może użyć określonego typu do utworzenia wystąpienia (abstrakcyjnych) typów bazowych lub interfejsów.

Przykład

[PexMethod]
[PexUseType(typeof(A))]
[PexUseType(typeof(B))]
public void MyTest(object testParameter)
{
     ... // IntelliTest will consider types A and B to instantiate 'testParameter'
}

PexAllowedException

Jeśli ten atrybut jest dołączony do elementu PexMethod (lub do klasy PexClass, zmienia domyślną logikę IntelliTest wskazującą, kiedy testy kończą się niepowodzeniem. Test nie zostanie uznany za niepowodzenie, nawet jeśli zgłosi określony wyjątek.

Przykład

Poniższy test określa, że konstruktor stosu może zgłosić argumentOutOfRangeException:

class Stack {
  int[] _elements;
  int _count;
  public Stack(int capacity) {
    if (capacity<0) throw new ArgumentOutOfRangeException();
    _elements = new int[capacity];
    _count = 0;
  }
  ...
}

Filtr jest dołączony do urządzenia w następujący sposób (można go również zdefiniować na poziomie zestawu lub testu):

[PexMethod]
[PexAllowedException(typeof(ArgumentOutOfRangeException))]
class CtorTest(int capacity) {
  Stack s = new Stack(capacity); // may throw ArgumentOutOfRangeException
}

PexAllowedExceptionFromAssembly

Więcej informacji

PexAllowedExceptionFromType

Więcej informacji

PexAllowedExceptionFromTypeUnderTest

Więcej informacji

Chcesz przesłać opinię?

Opublikuj swoje pomysły i sugestie funkcji w społeczności deweloperów.