Glossaire des attributsAttribute glossary

Attributs par espace de nomsAttributes by namespace

PexAssumeNotNullPexAssumeNotNull

Cet attribut indique que la valeur gérée ne peut pas être null.This attribute asserts that the governed value cannot be null. Il peut être associé à :It can be attached to:

  • un paramètre d’une méthode de test paramétrablea parameter of a parameterized test method

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

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

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

Il peut également être associé à un assembly de test, un élément ou une méthode de test ; dans ce cas, les premiers arguments doivent indiquer le champ ou le type auquel les hypothèses s’appliquent.It can also be attached to a test assembly, test fixture or test method; in this case the first arguments must indicate to which field or type the assumptions apply. Quand l’attribut s’applique à un type, il s’applique à tous les champs avec ce type formel.When the attribute applies to a type, it applies to all fields with this formal type.

PexClassPexClass

Cet attribut marque une classe qui contient des explorations.This attribute marks a class that contains explorations. Il est l’équivalent de l’attribut MSTest TestClassAttribute (ou NUnit TestFixtureAttribute).It is the equivalent of the MSTest TestClassAttribute (or the NUnit TestFixtureAttribute). Cet attribut est facultatif.This attribute is optional.

Les classes marquées avec PexClass doivent être constructibles par défaut :The classes marked with PexClass must be default constructible:

  • type exporté publiquementpublicly exported type
  • constructeur par défautdefault constructor
  • non abstraitenot abstract

Si la classe ne répond pas à ces exigences, une erreur est signalée et l’exploration échoue.If the class does not meet those requirements, an error is reported and the exploration fails.

Il est également vivement conseillé que ces classes soient partielles pour qu’IntelliTest puisse générer de nouveaux tests qui font partie de la classe, mais dans un fichier distinct.It is also strongly advised to make those classes partial so that IntelliTest can generate new tests that are part of the class, but in a separate file. Cette approche résout de nombreux problèmes de visibilité et est une technique classique en C#.This approach solves many problems due to visibility and is a typical technique in C#.

Suite et catégories supplémentaires :Additional suite and categories:

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

Spécification du type de test :Specifying the type under test:

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

La classe peut contenir des méthodes annotées avec PexMethod.The class may contain methods annotated with PexMethod. IntelliTest comprend également les méthodes d’installation et de suppression.IntelliTest also understands set up and tear down methods.

PexGenericArgumentsPexGenericArguments

Cet attribut fournit un type tuple pour l’instanciation d’un test unitaire paramétrable générique.This attribute provides a type tuple for instantiating a generic parameterized unit test.

PexMethodPexMethod

Cet attribut marque une méthode comme test unitaire paramétrable.This attribute marks a method as a parameterized unit test. La méthode doit résider dans une classe marquée avec l’attribut PexClass.The method must reside within a class marked with the PexClass attribute.

IntelliTest génère des tests sans paramètre classiques qui appellent le test unitaire paramétrable avec différents paramètres.IntelliTest will generate traditional, parameterless tests, which call the parameterized unit test with different parameters.

Le test unitaire paramétrable :The parameterized unit test:

  • doit être une méthode d’instancemust be an instance method
  • doit être visible pour la classe de test dans laquelle les tests générés sont placés en fonction de la cascade des paramètresmust be visible to the test class into which the generated tests are placed according to the Settings Waterfall
  • peut accepter un nombre quelconque de paramètresmay take any number of parameters
  • peut être génériquemay be generic

ExempleExample

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

PexExplorationAttributeBasePexExplorationAttributeBase

Complément d’informationMore information

PexAssemblySettingsPexAssemblySettings

Cet attribut peut être défini au niveau de l’assembly pour remplacer les valeurs de paramètre par défaut pour toutes les explorations.This attribute can be set at the assembly level to override default setting values for all explorations.

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

PexAssemblyUnderTestPexAssemblyUnderTest

Cet attribut spécifie un assembly qui est testé par le projet de test actuel.This attribute specifies an assembly that is being tested by the current test project.

[assembly: PexAssemblyUnderTest("MyAssembly")]

PexInstrumentAssemblyAttributePexInstrumentAssemblyAttribute

Cet attribut est utilisé pour spécifier un assembly à instrumenter.This attribute is used to specify an assembly to be instrumented.

ExempleExample

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")]

PexUseTypePexUseType

Cet attribut indique à IntelliTest qu’il peut utiliser un type particulier pour instancier des interfaces ou des types de base (abstrait).This attribute tells IntelliTest that it can use a particular type to instantiate (abstract) base types or interfaces.

ExempleExample

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

PexAllowedExceptionPexAllowedException

Si cet attribut est associé à PexMethod (ou à PexClass), il modifie la logique IntelliTest par défaut qui indique quand les tests échouent.If this attribute is attached to a PexMethod (or to a PexClass, it changes the default IntelliTest logic that indicates when tests fails. Le test ne sera pas considéré comme ayant échoué, même s’il lève l’exception spécifiée.The test will not be considered as failed, even if it throws the specified exception.

ExempleExample

Le test suivant spécifie que le constructeur de Stack peut lever une ArgumentOutOfRangeException :The following test specifies that the constructor of Stack may throw an ArgumentOutOfRangeException:

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

Le filtre est attaché à un élément comme suit (il peut également être défini au niveau de l’assembly ou du test) :The filter is attached to a fixture as follows (it can also be defined at the assembly or test level):

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

PexAllowedExceptionFromAssemblyPexAllowedExceptionFromAssembly

Complément d’informationMore information

PexAllowedExceptionFromTypePexAllowedExceptionFromType

Complément d’informationMore information

PexAllowedExceptionFromTypeUnderTestPexAllowedExceptionFromTypeUnderTest

Complément d’informationMore information

Vous avez des commentaires ?Got feedback?

Postez vos idées et demandes de fonctionnalités sur UserVoice.Post your ideas and feature requests on UserVoice.