Glossario degli attributi

Attributi per spazio dei nomi

PexAssumeNotNull

Questo attributo consente di asserire che il valore governato non può essere null. Può essere allegato a:

  • un parametro di un metodo di test con parametri

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

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

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

Può anche essere allegato a un assembly, una fixture o un metodo di test. In questo caso i primi argomenti devono indicare a quale campo o tipo sono applicati i presupposti. Quando l'attributo è applicato a un tipo, viene applicato a tutti i campi con questo tipo formale.

PexClass

Attributo che contrassegna una classe contenente explorations. Equivale all'attributo TestClassAttribute di MSTest (TestFixtureAttribute in NUnit). Questo attributo è facoltativo.

Le classi contrassegnate con PexClass devono poter essere costruite per impostazione predefinita:

  • tipo esportato pubblicamente
  • costruttore predefinito
  • non astratta

Se la classe non soddisfa tali requisiti, viene restituito un errore e l'esplorazione non riesce.

È anche consigliabile rendere le classi parziali in modo che IntelliTest sia in grado di generare nuovi test che fanno parte della classe, ma in un file separato. Questo approccio risolve molti problemi dovuti alla visibilità ed è una tecnica tipica in C#.

Suite e categorie aggiuntive:

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

Indicazione del tipo sottoposto a test:

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

La classe può contenere i metodi annotati con PexMethod. IntelliTest riconosce inoltre i metodi di configurazione e deconfigurazione.

PexGenericArguments

Questo attributo consente di usare una tupla del tipo per creare un'istanza di uno unit test con parametri generico.

PexMethod

Attributo che identifica un metodo come unit test con parametri. Il metodo deve trovarsi all'interno di una classe contrassegnata con l'attributo PexClass.

IntelliTest genera test tradizionali e senza parametri, che chiamano lo unit test con parametri con parametri diversi.

Lo unit test con parametri:

  • deve essere un metodo di istanza
  • deve essere visibile alla classe di test in cui vengono inseriti i test generati in base alle impostazioni a cascata
  • può accettare qualsiasi numero di parametri
  • può essere generico

Esempio

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

PexExplorationAttributeBase

Altre informazioni

PexAssemblySettings

Questo attributo può essere impostato a livello di assembly per eseguire l'override di valori predefiniti delle impostazioni per tutte le esplorazioni.

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

PexAssemblyUnderTest

Questo attributo specifica un assembly attualmente testato dal progetto di test corrente.

[assembly: PexAssemblyUnderTest("MyAssembly")]

PexInstrumentAssemblyAttribute

Attributo usato per specificare un assembly da instrumentare.

Esempio

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

Questo attributo indica a IntelliTest che può usare un tipo particolare per creare un'istanza di interfacce o tipi di base (astratti).

Esempio

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

PexAllowedException

Se questo attributo è associato a PexMethod o a PexClass, modifica la logica di IntelliTest predefinita che indica se il test ha esito negativo. Il test non verrà considerato come non riuscito, anche se viene generata l'eccezione specificata.

Esempio

Il test seguente specifica che il costruttore di Stack può generare un'eccezione ArgumentOutOfRangeException:

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

Il filtro è allegato a una fixture come indicato di seguito (può anche essere definito a livello di assembly o test):

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

PexAllowedExceptionFromAssembly

Altre informazioni

PexAllowedExceptionFromType

Altre informazioni

PexAllowedExceptionFromTypeUnderTest

Altre informazioni

Vuoi lasciarci dei commenti?

Pubblicare idee e richieste di funzionalità nella community degli sviluppatori.