Share via


Statik yardımcı sınıfları

IntelliTest, parametreli birim testleri yazarken kullanılabilecek bir dizi statik yardımcı sınıfı sağlar:

  • PexAssume: Girişlerle ilgili varsayımları tanımlamak için kullanılır ve istenmeyen girişleri filtrelemek için kullanışlıdır
  • PexAssert: Test çerçeveniz bir tane sağlamazsa kullanmak için basit bir onay sınıfı
  • PexChoose: IntelliTest'in yönettiği ek test girişleri akışı
  • PexObserve: Somut değerleri günlüğe kaydeder ve isteğe bağlı olarak bunları oluşturulan kodda doğrular

Bazı sınıflar, IntelliTest akıl yürütme altyapısıyla alt düzeyde etkileşim kurmanızı sağlar:

  • PexSymbolicValue: değişkenlerdeki sembolik kısıtlamaları incelemek veya değiştirmek için yardımcı programlar

PexAssume

Parametreli birim testlerinde önkoşullar gibi varsayımları ifade etmek için kullanılan statik bir sınıf. Bu sınıfın yöntemleri istenmeyen test girişlerini filtrelemek için kullanılabilir.

Varsayılan koşul bazı test girişlerinde tutulmazsa, pexAssumeFailedException oluşturulur. Bu, testin sessizce yok sayılmasına neden olur.

Örnek

Aşağıdaki parametreli test j=0 değerini dikkate almayacaktır:

public void TestSomething(int i, int j) {
     PexAssume.AreNotEqual(j, 0);
     int k = i/j;
     ...
}

Açıklamalar

Yukarıdaki kod neredeyse aşağıdakilerle eşdeğerdir:

     if (j==0)
          return;

ancak başarısız olan PexAssume hiçbir test çalışması ile sonuçlanmaz. If deyimi söz konusu olduğunda IntelliTest, if deyiminin then dalını kapsayacak ayrı bir test çalışması oluşturur.

PexAssume ayrıca dize, dizi ve koleksiyon varsayımları için özelleştirilmiş iç içe sınıflar içerir.

PexAssert

Parametreli birim testlerinde son koşul gibi onayları ifade etmek için kullanılan statik bir sınıf.

Onaylanan koşul bazı test girişlerini tutmazsa, testin başarısız olmasına neden olan bir PexAssertFailedException oluşturulur.

Örnek

Aşağıdaki, bir tamsayının mutlak değerinin pozitif olduğunu onaylar:

public void TestSomething(int i) {
     int j = Maths.Abs(i);
     PexAssert.IsTrue(j >= 0);
     ...
}

PexChoose

Parametreli SahteLeri uygulamak için kullanılabilen bir teste yardımcı giriş değerleri sağlayan statik bir sınıf.

PexChoose sınıfı, testin belirli giriş değerleri için başarılı mı yoksa başarısız mı olduğunu belirlemeye yardımcı olmaz. PexChoose yalnızca seçim olarak da adlandırılan giriş değerlerini sağlar. Giriş değerlerini kısıtlamak ve testin ne zaman geçtiğini veya başarısız olduğunu tanımlayan onaylar yazmak yine kullanıcıya aittir.

İşlem modları

PexChoose sınıfı iki modda çalışabilir:

  • IntelliTest giriş oluşturma sırasında testin ve test edilen kodun sembolik analizini gerçekleştirirken, seçici rastgele değerler döndürür ve IntelliTest her değerin testte ve test edilen kodda nasıl kullanıldığını izler. IntelliTest, testte ve test edilen kodda farklı yürütme yollarını tetikleyecek uygun değerler oluşturur.

  • Belirli test çalışmaları için oluşturulan kod, seçim sağlayıcısını belirli bir şekilde ayarlar, böylece bu tür bir test çalışmalarının yeniden yürütülmesi belirli bir yürütme yolunu tetikleyecek belirli seçimler yapar.

Kullanım

  • Basit çağrı PexChoose.Value yeni bir değer oluşturmak için:
public int Foo() {
    return PexChoose.Value<int>("foo");
}

PexObserve

Adlandırılmış değerleri günlüğe kaydetmek için statik bir sınıf.

IntelliTest kodu incelediğinde, biçimlendirilmiş dize gösterimlerini kullanarak hesaplanan değerleri kaydetmek için PexObserve kullanılır. Değerler benzersiz adlarla ilişkilendirilir.

PexObserve.Value<string>("result", result);

Örnek

// product code
public static class MathEx {
     public static int Square(int value) { return value * value; }
}

// fixture
[TestClass]
public partial class MathExTests {
     [PexMethod]
     public int SquareTest(int a) {
        int result = MathEx.Square(a);
        // storing result
        return result;
     }
}

PexSymbolicValue

Parametrelerdeki kısıtlamaları yoksaymak ve değerlerle ilişkili sembolik bilgileri yazdırmak için kullanılan statik bir sınıf.

Kullanım

Normalde IntelliTest, yürütme sırasında kodun tüm yürütme yollarını kapsamaya çalışır. Ancak, özellikle varsayım ve onay koşullarını hesaplarken, olası tüm durumları incelememelidir.

Örnek

Bu örnekte PexAssume.Arrays.ElementsAreNotNull yönteminin uygulanması gösterilmektedir. yönteminde, IntelliTest'in farklı dizi boyutları oluşturmaya çalışmasından kaçınmak için dizi değerinin uzunluğu üzerindeki kısıtlamaları yoksayarsınız. Kısıtlamalar yalnızca burada yoksayılır. Test edilen kod farklı dizi uzunlukları için farklı davranırsa IntelliTest, test edilen kodun kısıtlamalarından farklı boyutlu diziler oluşturamaz.

public static void AreElementsNotNull<T>(T[] value)
    where T : class
{
    PexAssume.NotNull(value);
    // the followings prevents the exploration of all array lengths
    int len = PexSymbolicValue.Ignore<int>(value.Length);

    // building up a boolean value as follows prevents exploration
    // of all combinations of non-null (instead, there are just two cases)
    bool anyNull = false;
    for (int i = 0; i < len; ++i)
        anyNull |= value[i] == null;

    // was any element null?
    if (anyNull)
        PexAssume.Fail("some element of array is a null reference");
}

Geri bildirimde mi bulunmak istiyorsunuz?

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