Sdílet prostřednictvím


Glosář atributů

Atributy podle oboru názvů

PexAssumeNotNull

Tento atribut tvrdí, že řízená hodnota nemůže být null. Může být připojen k:

  • parametr parametrizované testovací metody

    // 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 {}
    

Lze jej také připojit k testovacímu sestavení, zkušební přípojce nebo testovací metodě; v tomto případě musí první argumenty znamenat, pro které pole nebo typ předpokladů platí. Pokud se atribut vztahuje na typ, vztahuje se na všechna pole s tímto formálním typem.

PexClass

Tento atribut označuje třídu, která obsahuje průzkumy. Je to ekvivalent MSTest TestClassAttribute (nebo NUnit TestFixtureAttribute). Tento atribut je volitelný.

Třídy označené PexClass musí být výchozí konstruktovatelné:

  • veřejně exportovaný typ
  • výchozí konstruktor
  • není abstraktní

Pokud třída tyto požadavky nesplňuje, zobrazí se chyba a průzkum selže.

Důrazně doporučujeme, aby tyto třídy byly částečné , aby IntelliTest mohl generovat nové testy, které jsou součástí třídy, ale v samostatném souboru. Tento přístup řeší mnoho problémů z důvodu viditelnosti a je typickou technikou jazyka C#.

Další sada a kategorie:

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

Určení typu v rámci testu:

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

Třída může obsahovat metody anotované pomocí PexMethod. IntelliTest také rozumí metodám nastavení a odbourání.

PexGenericArguments

Tento atribut poskytuje typ řazené kolekce členů pro vytvoření instance obecného parametrizovaného testu jednotek.

PexMethod

Tento atribut označuje metodu jako parametrizovaný test jednotek. Metoda musí být umístěna v třídě označené atributem PexClass .

IntelliTest vygeneruje tradiční testy bez parametrů, které volají parametrizovaný test jednotek s různými parametry.

Parametrizovaný test jednotek:

  • musí být metoda instance.
  • musí být viditelné pro třídu testů, do které jsou vygenerované testy umístěny podle Nastavení vodopádu.
  • může mít libovolný počet parametrů.
  • může být obecný

Příklad

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

PexExplorationAttributeBase

Další informace

PexAssemblySettings

Tento atribut lze nastavit na úrovni sestavení a přepsat výchozí hodnoty nastavení pro všechny průzkumy.

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

PexAssemblyUnderTest

Tento atribut určuje sestavení, které testuje aktuální testovací projekt.

[assembly: PexAssemblyUnderTest("MyAssembly")]

PexInstrumentAssemblyAttribute

Tento atribut slouží k určení sestavení, které se má instrumentovat.

Příklad

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

Tento atribut říká IntelliTestu, že může použít konkrétní typ k vytvoření instance (abstraktních) základních typů nebo rozhraní.

Příklad

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

PexAllowedException

Pokud je tento atribut připojen k PexMethod (nebo k PexClass, změní výchozí logiku IntelliTest, která označuje, kdy testy selže. Test nebude považován za neúspěšný, i když vyvolá zadanou výjimku.

Příklad

Následující test určuje, že konstruktor Stack může vyvolat ArgumentOutOfRangeException:

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

Filtr je připojen k zařízení následujícím způsobem (lze jej také definovat na úrovni montáže nebo zkoušky):

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

PexAllowedExceptionFromAssembly

Další informace

PexAllowedExceptionFromType

Další informace

PexAllowedExceptionFromTypeUnderTest

Další informace

Máte zpětnou vazbu?

Své nápady a žádosti o funkce můžete zadávat na webu Developer Community.