SORU
23 EYLÜL 2008, Salı


İddia.() Başarısız olarak kötü bir uygulama mı?

İddia kullanıyorum.TDD yaparken çok başarısız. Ben genellikle çalışan bir test bir zaman ama ne zaman alırım fikirler için bir şeyler istediğim için uygulamak daha sonra ben hızlı yazma bir boş test adı test yöntemi gösterir istediğim için uyguladığımız bir nevi yapılacaklar listesi. Bir koydum unutmam emin olmak için İddia.() Başarısız vücut.

XUnit.Net denediğiniz zaman İddia uygulanan etmemişlerdi buldum.Başarısız. Tabii ki her zaman onaylayabilirsiniz.İsTrue(false) ama bu benim niyetim de iletişim kurmak değildir. İzlenim İddia var.Başarısız bir amaç için uygulanan değildi. Bu kabul kötü bir uygulamadır? Neden? eğer öyleyse

< / ^ hr .

@Martin Meredith Benim yaptığım tam olarak bu değil. Bir deneme yazıyorum ve kod çalışması için uygulamak. Genellikle aynı anda birden fazla test bence. Ya da bir test hakkında başka bir şey üzerinde çalışırken yazmayı düşünüyorum. Hatırlamak başarısız boş bir test yazıyorum. Zaman test yazmak için alıyorum ben düzgünce test-ilk iş.

@Jimmeh Bu iyi bir fikir gibi görünüyor. Göz ardı testler başarısız yok ama yine de ayrı bir listede göster. Bunu denemek için var.

@Matt Howells Harika Bir Fikir. Notımplementedexception niyetini belirt daha iyi iletişim kurar.() Başarısız bu durumda

@Mitch Wheat İşte aradığım şey buydu. Bunu önlemek için başka bir şekilde kötüye kötü muameleye maruz görünüyor.

CEVAP
23 EYLÜL 2008, Salı


İddia çağırmak yerine bu senaryo için.Başarısız, aşağıdaki yaparım (C# / NUnit)

[Test]
public void MyClassDoesSomething()
{
    throw new NotImplementedException();
}

Bir İddia daha açık.Başarısız.

İddia daha açık iddialar kullanmak en iyisidir yönünde genel bir uzlaşma var gibi görünüyor.() Başarısız. Çoğu çerçeveler daha iyi bir alternatif yok çünkü olsa vardır. Örneğin, NUnit (ve diğerleri) bazı kod özel durum belli bir sınıfa atar, bu test için bir ExpectedExceptionAttribute sağlamak. Özel bir özelliği, belirli bir değere ayarlanmış olduğunu test etmek için ancak kimse bunu kullanamaz. Bunun yerine tatil Savunmak için var.Başarısız:

[Test]
public void ThrowsExceptionCorrectly()
{
    const string BAD_INPUT = "bad input";
    try
    {
        new MyClass().DoSomething(BAD_INPUT);
        Assert.Fail("No exception was thrown");
    }
    catch (MyCustomException ex)
    {
         Assert.AreEqual(BAD_INPUT, ex.InputString); 
    }
}

XUnit.Net bu yöntem, İddia.Bu çok derli toplu yapar bir İddia gerektirmeden atar.Yöntem başarısız. Bir İddia dahil değil.() Başarısız yöntem xUnit.Net geliştiriciler ve daha açık bir alternatif bulmak kullanmak ve gerektiğinde yeni iddialar desteklemesi için teşvik ediyor.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Matthew Pearce

    Matthew Pear

    9 AĞUSTOS 2009
  • PaulGBelliveau

    PaulGBellive

    5 Mart 2009
  • Rickymon Tero

    Rickymon Ter

    1 Ocak 2007