Słownik atrybutów
Atrybuty według przestrzeni nazw
Microsoft.Pex.Framework
Microsoft.Pex.Framework. Ustawienia
Microsoft.Pex.Framework.Instrumentation
Microsoft.Pex.Framework.Using
Microsoft.Pex.Framework.Validation
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
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
PexAllowedExceptionFromType
PexAllowedExceptionFromTypeUnderTest
Chcesz przesłać opinię?
Opublikuj swoje pomysły i sugestie funkcji w społeczności deweloperów.