Glossario degli attributi
Attributi per spazio dei nomi
Microsoft.Pex.Framework
Microsoft.Pex.Framework.Settings
Microsoft.Pex.Framework.Instrumentation
Microsoft.Pex.Framework.Using
Microsoft.Pex.Framework.Validation
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
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
PexAllowedExceptionFromType
PexAllowedExceptionFromTypeUnderTest
Vuoi lasciarci dei commenti?
Pubblicare idee e richieste di funzionalità nella community degli sviluppatori.