2009-08-29 39 views
5

C# VS2008'deki bir Xml veri kaynağını kullanarak veriye dayalı birim sınamaları yazıyorum.Microsoft.VisualStudio.TestTools.DataSource.XML genişletme

Öznitelikler böyle bir şeye benziyor ve her şey çok iyi çalışıyor.

[DeploymentItem("HtmlSchemaUrls.xml")] 
    [DataSource("DataSource", "Microsoft.VisualStudio.TestTools.DataSource.XML", "|DataDirectory|\\HtmlSchemaUrls.xml", Microsoft.VisualStudio.TestTools.WebTesting.DataBindingAccessMethod.Sequential, "URL")] 
    [DataBinding("DataSource", "URL", "URL_Text", "DataSource.URL.URL_Text")] 
    [TestMethod] 

Ben App.config aracılığıyla preferrably yapılandırılabilir, Microsoft.VisualStudio.TestTools.DataSource.XML veri kaynağı yeteneklerini genişletmek istiyorum. Örneğin, true olduğunda bir bool Xml dosyasındaki tüm satırlarda koşuyorum ve yanlış bir şekilde yalnızca bir tanesini çalıştırıyorum.

Bu kontrolü, test örneğinde yapmak istemiyorum - Bu gereksinimle 1000'lerce test vakumum var.

Bunun nasıl gerçekleştirileceğine dair herhangi bir rehberlik en çok takdir edilecektir.

+1

Bir şey 1000'ler varsa yanlış görünüyor: - 3 o operasyon için tüm parametreler veri güdümlü test durumu env hazırlamak için basit bir kopyasını kullanarak (sizin app.config

Kısaltılmış örnek saklanabilir dosya sistemine isabet eden testlerden (dürüst olmak gerekirse, bu noktada entegrasyon testi yapıyorsunuz) birim testi). Yalnızca bir XML satırına ihtiyaç duyduğunuz durumlar için test ettiğiniz kodu ayırmak için bir tür alay veya aldatma yapmayı düşünebilirsiniz. – Michael

cevap

1

Bazı test seti deposundan XML test kümenizi kopyalamak için AssemblyInitialize kullanın.
1 - [DeploymentItem ("HtmlSchemaUrls.xml")] 'a ihtiyacınız yoktur - sadece kopyalamak yerine, sınamak için gereken kayıtları içeren yeni bir dosya oluşturun (parametre xsl? Kullanarak)


[AssemblyInitialize()] 
public static void AssemblyInit(TestContext context) 
{ 
    ... 
    string strRelocatedTestCaseFile = 
    Path.Combine(TheToolBox.ShortPath(AppDomain.CurrentDomain.BaseDirectory),                   
       "TestCase.xml"); 
    if(!string.IsNullOrEmpty(strTestCaseFile)) 
    { 
    string strMessage = "Copying TestCase input file: '" + 
         strTestCaseFile + "' to '" + strRelocatedTestCaseFile + "'"; 
    Console.WriteLine(strMessage); 
    File.Copy(strTestCaseFile, strRelocatedTestCaseFile, true); 
    } 
} 
+0

Bu iyi bir fikir, ancak 'DataSource' veri ** önce ** bağlar çünkü AssemblyInitialize bile çalışır. Test, her zaman, veri kaynağı dosyasının "eski" bir sürümü kullanılarak yapıştırılacaktır. – Snixtor