Share via


Öznitelik sözlüğü

Ad alanına göre öznitelikler

PexAssumeNotNull

Bu öznitelik, yönetilen değerin null olamayacağını onaylar. Şu öğeye eklenebilir:

  • parametreli test yönteminin parametresi

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

    public class Foo {
       // this field should not be null
       [PexAssumeNotNull]
       public object Bar;
    }
    
  • tür

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

Ayrıca bir test montajına, test fikstürüne veya test yöntemine bağlanabilir; bu durumda, ilk bağımsız değişkenlerin varsayımların hangi alana uygulanacağını veya yazacağını belirtmesi gerekir. Öznitelik bir türe uygulandığında, bu resmi türe sahip tüm alanlara uygulanır.

PexClass

Bu öznitelik, keşifler içeren bir sınıfı işaretler. MSTest TestClassAttribute (veya NUnit TestFixtureAttribute) eşdeğeridir. Bu öznitelik isteğe bağlıdır.

PexClass ile işaretlenmiş sınıflar varsayılan olarak oluşturulabilir olmalıdır:

  • genel olarak dışarı aktarılan tür
  • varsayılan oluşturucu
  • soyut değil

Sınıf bu gereksinimleri karşılamıyorsa bir hata bildirilir ve araştırma başarısız olur.

IntelliTest'in sınıfın parçası olan ancak ayrı bir dosyada yeni testler oluşturabilmesi için bu sınıfların kısmi olması da önemle tavsiye edilir. Bu yaklaşım görünürlük nedeniyle birçok sorunu çözer ve C# dilinde tipik bir tekniktir.

Ek paket ve kategoriler:

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

Test altındaki türü belirtme:

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

sınıfı, PexMethod ile ek açıklamalı yöntemler içerebilir. IntelliTest ayrıca ayarlama ve kaldırma yöntemlerini de anlar.

PexGenericArguments

Bu öznitelik, genel parametreli birim testi örneği oluşturmak için bir tür tanımlama grubu sağlar.

PexMethod

Bu öznitelik bir yöntemi parametreli birim testi olarak işaretler. yöntemi, PexClass özniteliğiyle işaretlenmiş bir sınıfta bulunmalıdır.

IntelliTest, parametreli birim testini farklı parametrelerle çağıran geleneksel, parametresiz testler oluşturur.

Parametreli birim testi:

  • örnek yöntemi olmalıdır
  • oluşturulan testlerin Ayarlar Şelalesine göre yerleştirildiği test sınıfına görünür olmalıdır
  • herhangi bir sayıda parametre alabilir
  • genel olabilir

Örnek

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

PexExplorationAttributeBase

Daha fazla bilgi

PexAssemblySettings

Bu öznitelik, tüm keşifler için varsayılan ayar değerlerini geçersiz kılmak için derleme düzeyinde ayarlanabilir.

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

PexAssemblyUnderTest

Bu öznitelik, geçerli test projesi tarafından test edilen bir derlemeyi belirtir.

[assembly: PexAssemblyUnderTest("MyAssembly")]

PexInstrumentAssemblyAttribute

Bu öznitelik, izlenecek bir derleme belirtmek için kullanılır.

Örnek

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

Bu öznitelik IntelliTest'e, temel türleri veya arabirimleri örneklemek (soyut) için belirli bir tür kullanabileceğini bildirir.

Örnek

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

PexAllowedException

Bu öznitelik bir PexMethod'a (veya pexClass'a) bağlıysa, testlerin ne zaman başarısız olduğunu gösteren varsayılan IntelliTest mantığını değiştirir. Belirtilen özel durum oluştursa bile test başarısız olarak kabul edilmez.

Örnek

Aşağıdaki test, Stack oluşturucusunun bir ArgumentOutOfRangeException oluşturabileceğini belirtir:

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

Filtre bir fikstüre aşağıdaki gibi bağlanır (montaj veya test düzeyinde de tanımlanabilir):

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

PexAllowedExceptionFromAssembly

Daha fazla bilgi

PexAllowedExceptionFromType

Daha fazla bilgi

PexAllowedExceptionFromTypeUnderTest

Daha fazla bilgi

Geri bildirimde mi bulunmak istiyorsunuz?

Fikirlerinizi ve özellik isteklerinizi Geliştirici Topluluğu’na gönderin.