Glosář atributů
Atributy podle oboru názvů
Microsoft.Pex.Framework
Microsoft.Pex.Framework. Nastavení
Microsoft.Pex.Framework.Instrumentation
Microsoft.Pex.Framework.Using
Microsoft.Pex.Framework.Validation
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
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
PexAllowedExceptionFromType
PexAllowedExceptionFromTypeUnderTest
Máte zpětnou vazbu?
Své nápady a žádosti o funkce můžete zadávat na webu Developer Community.