Glossário do atributo
Atributos por namespace
Microsoft.Pex.Framework
Microsoft.Pex.Framework.Settings
Microsoft.Pex.Framework.Instrumentation
Microsoft.Pex.Framework.Using
Microsoft.Pex.Framework.Validation
PexAssumeNotNull
Esse atributo declara que o valor controlado não pode ser nulo. Ele pode ser anexado a:
um parâmetro de um método de teste parametrizado
// assume foo is not null [PexMethod] public void SomeTest([PexAssumeNotNull]IFoo foo, ...) {}
um campo
public class Foo { // this field should not be null [PexAssumeNotNull] public object Bar; }
Um tipo
// never consider null for Foo types [PexAssumeNotNull] public class Foo {}
Ele também pode ser anexado a um assembly de teste, acessório de teste ou método de teste, nesse caso o primeiro argumento deve indicar a qual campo ou tipo as suposições se aplicam. Quando o atributo se aplica a um tipo, ele se aplica a todos os campos com este tipo formal.
PexClass
Esse atributo marca uma classe que contém explorações. É o equivalente a MSTest TestClassAttribute (ou ao NUnit TestFixtureAttribute). Esse atributo é opcional.
As classes marcadas com PexClass devem ser construíveis por padrão:
- tipo exportado publicamente
- construtor padrão
- não abstrato
Se a classe não atender a esses requisitos, um erro será relatado e a exploração falhará.
Também é altamente recomendável tornar essas classes parciais para que o IntelliTest possa gerar novos testes que fazem parte da classe, mas em um arquivo separado. Essa abordagem resolve muitos problemas devido à visibilidade e é uma técnica comum em C#.
Pacotes de teste e categorias adicionais:
[TestClass] // MSTest test fixture attribute
[PexClass(Suite = "checkin")] // fixture attribute
public partial class MyTests { ... }
Especificando o tipo em teste:
[PexClass(typeof(Foo))] // this is a test for Foo
public partial class FooTest { ... }
A classe pode conter métodos anotados com PexMethod. O IntelliTest também entende os métodos de configuração e desmontagem.
PexGenericArguments
Este atributo fornece uma tupla de tipo para instanciar um teste de unidade parametrizado genérico.
PexMethod
Esse atributo marca um método como um teste de unidade parametrizado. O método deve residir em uma classe marcada com o atributo PexClass.
O IntelliTest gerará testes tradicionais sem parâmetros, que chamam o teste de unidade parametrizado com parâmetros diferentes.
O teste de unidade parametrizado:
- deve ser um membro de instância
- deve ser visível para a classe de teste na qual os testes gerados são colocados de acordo com a Cascata de configurações
- pode conter qualquer número de parâmetros
- pode ser genérico
Exemplo
[PexClass]
public partial class MyTests {
[PexMethod]
public void MyTest(int i)
{ ... }
}
PexExplorationAttributeBase
PexAssemblySettings
Este atributo pode ser definido no nível de assembly para substituir os valores de configuração padrão para todas as explorações.
using Microsoft.Pex.Framework;
// overriding the test framework selection
[assembly: PexAssemblySettings(TestFramework = "MSTestv2")]
PexAssemblyUnderTest
Esse atributo especifica um assembly que está sendo testado pelo projeto de teste atual.
[assembly: PexAssemblyUnderTest("MyAssembly")]
PexInstrumentAssemblyAttribute
Este atributo é usado para especificar um assembly a ser instrumentado.
Exemplo
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
Este atributo diz ao IntelliTest que ele pode usar um tipo específico para criar uma instância de tipos base (abstratos) ou interfaces.
Exemplo
[PexMethod]
[PexUseType(typeof(A))]
[PexUseType(typeof(B))]
public void MyTest(object testParameter)
{
... // IntelliTest will consider types A and B to instantiate 'testParameter'
}
PexAllowedException
Se esse atributo estiver anexado a um PexMethod (ou a uma PexClass, ele vai alterar a lógica do IntelliTest padrão que indica quando os testes falham. O teste não será considerado como com falha, mesmo se ele lançar a exceção especificada.
Exemplo
O teste a seguir especifica que o construtor de Stack pode gerar um ArgumentOutOfRangeException:
class Stack {
int[] _elements;
int _count;
public Stack(int capacity) {
if (capacity<0) throw new ArgumentOutOfRangeException();
_elements = new int[capacity];
_count = 0;
}
...
}
O filtro é anexado a um acessório da seguinte maneira (ele também pode ser definido no nível de assembly ou de teste):
[PexMethod]
[PexAllowedException(typeof(ArgumentOutOfRangeException))]
class CtorTest(int capacity) {
Stack s = new Stack(capacity); // may throw ArgumentOutOfRangeException
}
PexAllowedExceptionFromAssembly
PexAllowedExceptionFromType
PexAllowedExceptionFromTypeUnderTest
Recebeu comentários?
Poste suas ideias e solicitações de recursos na Comunidade de Desenvolvedores.