2008-09-04 20 views
5

NUnit tarafından oluşturulan TestResult.xml dosyasında gerçekten görünecek şekilde bir birim testine "mesaj" ekleyebilmeyi isterim. Örneğin, bu, şu anda oluşturulur:NUnit'ten TestResult.xml dosyasına daha fazla bilgi ekleme

<results> 
    <test-case name="MyNamespace.Tests.MyTest" executed="True" success="True" time="0.203" asserts="4" /> 
</results> 
bir ek özelliği olması mümkün (ya da durumun gerektirdiği gibi düğüm) gibi olmak istiyorum

: Fikir olmasıdır

<results> 
    <test-case name="MyNamespace.Tests.MyTest" executed="True" success="True" time="0.203" asserts="4" message="Tested that some condition was met." /> 
</results> 

Yukarıdaki "mesaj", bir şekilde test yönteminin kendisinde tanımlanacaktır (benim durumumda, çalışma zamanında üretilir). Böyle bir şey yapabilmek için eksik olduğum bir yer var mı?

cevap

2

Bu noktayı kaçırıyor olabilir, ancak sınamalarını adlandırma konusunda ne denediklerini göstermeye ne dersiniz - o zaman iletiye bile ihtiyacınız olmayabilir.

Kesinlikle gerekli olduğunu kanıtlıyorsa, bence kendi testrunner'ınızı (başımın üst kısmından) TestCase'in dışında ek bir öznitelik okuyacak ve çıktıya ekleyecek olan üretmek gerekir.

+0

Ya bir yansıma büyüsü yapmam gerektiğini ve çalışma zamanında dinamik olarak oluşturup testler yapmam gerektiğini ya da özel bir test koşucusu oluşturmam gerektiğini doğruladınız. –

+0

Tamamen temelsiz değilsiniz. Ancak, TestResult.xml dosyasına eklemek istediğim test edilen koşullar genellikle çalışma zamanına kadar bilinmemektedir. Şu anda sadece Console.WriteBunu seçiyorum. Bu testler, muhtemelen sadece bazı son durum değerlerinin iddia edildiği "test koşucuları" olarak adlandırılır. Bence bu aynı çizgide, dinamik olarak bu test yöntemlerini yansıma kullanarak oluşturabilir ve isimlendirebilirim, ama sanırım bu aşırıya kaçmaya başlıyor.:-) Bu arada bir TestRunner oluşturmayı araştırmaya devam edeceğim. –

0

Çalışma zamanında kullanılabilir bir şey göremiyorum, ancak araştırmak isteyebileceğiniz birkaç özellik var: Description özniteliği ve Property özniteliği, XML çıkış dosyasına metin ekleyin. Ne yazık ki, ikisi de derleme zamanında tanımlanıyor. Son NUnit yılında

5

Yapabileceğiniz Lig: "Burada bazı mesaj" sabit mesaj veya bir mesaj zamanında oluşturulan ve bir dize değişkeni saklanan olabilir

Assert.AreEqual(250.00, destination.Balance, "some message here"); 

. Bu mesajlar yalnızca çıkışta görünecektir, ancak onaylama başarısız olursa. Bununla birlikte, genellikle, başarısız testlerle ilgili bilgilere gereksiniminiz vardır. Bu nedenle, her bir iletiyi ekleyerek bir dizeyi oluşturmanızı ve ardından bu dize değişkenini tüm önerilerinizdeki iletiyi kullanarak kullanmanızı öneririm. Bu, ihtiyacınız olan tüm bilgileri başarısız testlerden elde etmenizi sağlar.

+0

Tam olarak aradığım şey bu kadar harika! –

0

İstediğiniz iletiyi kolayca yazmak için TestContext'i kullanabilirsiniz. İşte nasıl kuruluyorum.

Testlerimin her biri bir testbase sınıfından miras alınır. Bu gereksiz kodu kaldırır.

[TestFixture] 
public class TestBase 
{ 

    public IWebDriver driver; 

    //[OneTimeSetUp] and [OneTimeTearDown] go here if needed 

    [SetUp] 
    public void Setup(){ 
     driver = Shortcuts.SetDriver("my browser"); 
    } 

    [TearDown] 
    public void TearDown() 
    { 
     driver.Quit(); 
     Comment("@Result: " + TestContext.CurrentContext.Result.Outcome.ToString()); 
    } 

    public void Comment(string _comment) 
    { 
     TestContext.Out.WriteLine(_comment); 
    } 
    public void Error(string _error) 
    { 
     TestContext.Error.WriteLine(_error); 
    } 

} 

En alttaki iki işlevi, söz konusu TestContext'te herhangi bir mesaj veya hata olduğunu görebilirsiniz. Bu da parallize edilebilir testler ile güzel çalışacaktır.

Testlerimi kurmak ve konsoluma yazmak için bu üst sınıfı kullanabilirim.

//Role Management 
public class RoleManagementTests : TestBase 
{ 
    [TestCase] 
    public void RoleManagement_7777_1() 
    { 
     Comment("Expected: User has the ability to view all roles in the system."); 
     //Test goes here 
    } 
} 

Şimdi çıkışı (Visual Studio) ve NUnit Konsolu Runner kullanarak TestResult.xml içinde sonuçlarını görebilirsiniz.

İlgili konular