Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Tam bir XML DataSource ve Tablo tabanlı veri temelli testin test senaryosu gereksinimleriniz için çok ağır olabileceği senaryolar olabilir. Hafif veri temelli test, testinizin verileri basit olduğunda ve kolayca meta veri olarak ifade edilebildiğinde veri temelli test desteği almak için hızlı ve kolay bir yol sağlar. Şimdi bir örnek kullanalım ve nasıl yapıldığını görelim.
Hafif veri temelli testin verileri bir meta veri kümesi (test, sınıf veya modül düzeyinde) olarak ifade edilir. Bu kümedeki değerlerin her biri için, ilgili test yöntemleri ve ilişkili kurulum ve yırtma yöntemleri kümedeki her değer için yürütülür. Şimdi bunu yerel kodda nasıl yazacaklarına göz atalım:
1 #include "WexString.h"
2 #include "WexTestClass.h"
3
4 using namespace WEX::Common;
5 using namespace WEX::TestExecution;
6 using namespace WEX::Logging;
7 namespace WEX { namespace TestExecution { namespace Examples
8 {
9 class SimpleDataDrivenExample
10 {
11 TEST_CLASS(SimpleDataDrivenExample);
12 ...
13 BEGIN_TEST_METHOD(SetsOfDataTest)
14 TEST_METHOD_PROPERTY(L"Data:Color", L"{Purple, Maroon, Brown}")
15 END_TEST_METHOD()
16 };
14. satırdaki TEST_METHOD_PROPERTY için parametre değerlerine dikkat edin. Test meta verisi değeri "{" ile başlar ve virgülle veya noktalı virgülle ayrılmış değer listesinin belirtildiğini belirten bir "}" ile biter. TAEF, bu kümedeki her değer için SetsOfDataTest() adlı test yöntemini bir kez yeniden yürütür.
Ayrıca meta veri adının "Data:" ile başladığına da dikkat edin. Bu, meta veri kümesinin veri temelli test parametreleri için varyasyonları gerçekten belirttiğini ve tablo tabanlı veri temelli testteki veri parametrelerine çok benzer gerçek test yöntemi için kullanılabilir olacağını gösterir:
11 ...
12
13 void SimpleDataDrivenExample::SetsOfDataTest()
14 {
15 String color;
16 if (SUCCEEDED(TestData::TryGetValue(L"color", color)))
17 {
18 Log::Comment(L"Color retrieved was " + color);
19 }
20 }
21 } /* namespace Examples */ } /* namespace TestExecution */ } /* namespace WEX */
Yönetilen kodla çalışırken, veri kümesinin belirtimi ve alınması yerel örneğe çok benzer. Şimdi bir göz atalım:
1 namespace WEX.Examples
2 {
3 using Microsoft.VisualStudio.TestTools.UnitTesting;
4 using System;
5 using System.Collections;
6 using System.Data;
7 using WEX.Logging.Interop;
8 using WEX.TestExecution;
9
10 [TestClass]
11 public class CSharpDataDrivenSimpleExample
12 {
13 ...
14 [TestMethod]
15 [TestProperty("Data:Color", "{Red, Green, Blue}")]
16 public void SetsOfMetadataTest()
17 {
18 Log.Comment("Color is " + m_testContext.DataRow["Color"]);
19 }
20
21 public TestContext TestContext
22 {
23 get { return m_testContext; }
24 set { m_testContext = value; }
25 }
26
27 private TestContext m_testContext;
28 }
29 }
Tablo tabanlı veri temelli testlerde olduğu gibi meta veri olarak belirtilen veri kümeleri de TestContext.DataRow aracılığıyla alınmasına izin verir. Veri temelli test hafifliğini korumak için parametre türünün her zaman WEX::Common::String (yerel kodda) ve String (yönetilen kodda) olacağını unutmayın
Birden çok veri değeri belirtilirse, tüm olası değerlerin kartezyen ürünü alınır ve her birleşim için test yöntemi çağrılır.
Aynı test yöntemi için belirtilen veri kümelerinin yanı sıra bazı meta veri kümelerinin (ThreadingModel meta veri kümeleri gibi) olması da mümkündür. Böyle bir durumda, tüm meta veri kümelerinin ve veri kümelerinin birleştirici genişlemesi TAEF tarafından oluşturulur ve ilgili test yöntemleri her birleşimle çağrılır.
Özel durumlar - bir dizi meta veri veya veri içeren veri temelli test
Tablo tabanlı veri temelli teste bağımlı bir test yönteminiz olabilir ve bunun için bir veri kümesi veya meta veri kümesi belirtebilirsiniz. Örneğin, bir test yönteminin tablo tabanlı veri temelli testte belirtilen "boyut" ve "renk" parametreleri olabilir ve tüm satırların "saydamlık" parametresi true ve ardından false olarak ayarlanmış şekilde bir kez yürütülmesini isteyebilir. Böyle bir durumda, veri temelli test için "{true, false}" kümesi olarak "saydamlık" belirtilebilir. Meta veri kümesi dizeleri tablosu tabanlı veri temelli satırda parametre çakışmaları olması durumunda, Satır düzeyi parametre türü ve değerinin meta veri kümesi değerini geçersiz kılacağını unutmayın.
Veri/meta veri kümeleri ile testleri yürütme
Veri kümeleri içeren testlerin yürütülmesi oldukça sezgiseldir. Örnek testlerimiz için /listproperties çıkışına göz atalım:
1 te Examples\CPP.DataDriven.Example.dll /name:*SetsOfDataTest* /listproperties
2
3 Test Authoring and Execution Framework v2.9.3k for x64
4
5 f:\ Examples\CPP.SimpleDataDriven.Example.dll
6 WEX::TestExecution::Examples::SimpleDataDrivenExample<
7 WEX::TestExecution::Examples::SimpleDataDrivenExample::SetsOfDataTest#metadataSet0
8 Property[Data:Color] = {Purple, Maroon, Brown}
9
10 Data[Color] = Purple
11
12 WEX::TestExecution::Examples::SimpleDataDrivenExample::SetsOfDataTest#metadataSet1
13 Property[Data:Color] = {Purple, Maroon, Brown}
14
15 Data[Color] = Maroon
16
17 WEX::TestExecution::Examples::SimpleDataDrivenExample::SetsOfDataTest#metadataSet2
18 Property[Data:Color] = {Purple, Maroon, Brown}
19
20 Data[Color] = Brown
Yukarıdaki örnekte 7, 12 ve 17. satırlara dikkat edin. Veri kümesindeki değerle test yönteminin her çağrısına bir meta veri kümesi dizini eklenir. Bu dizin şu biçimdedir:
<namespace qualified test method name>#metadataSet<metadataIndex>
8, 13 ve 18. satırlar, bu hafif veri odaklı test desteği için belirtilen meta veri kümesini gösterir. Bu durumda küme mor, bordo ve kahverengi renklerden oluşur. 10, 15 ve 20. satırlar, testin geçerli çağrısı için etkin olan bu kümedeki gerçek değeri gösterir. SetsOfMetadataTest#metadataSet1 durumunda, bu yöntemin ikinci çağrısında, kümedeki etkin parametre değeri "Maroon" olur
Tablo tabanlı veri temelli testlerde yaptığınız gibi Veri değerini veya adını seçebilirsiniz. Örneğin, /select:'Maroon' veya /name:@Data:Color=*#metadataSet1 gibi bir seçim sorgusuyla SetsOfDataTest#metadataSet1'i seçebilirsiniz
Hızlı başvuru için, yönetilen test örneğinden /listproperties çıkışı aşağıda gösterilmiştir:
te Examples\CSharp.DataDriven.Example.dll /name:*SetsOfMetadataTest* /listproperties
Test Authoring and Execution Framework v2.9.3k for x64
f:\ Examples\CSharp.DataDrivenSimple.Example.dll
WEX.Examples.CSharpDataDrivenSimpleExample
WEX.Examples.CSharpDataDrivenSimpleExample.NonDataDrivenTest
WEX.Examples.CSharpDataDrivenSimpleExample.SetsOfMetadataTest#metadataSet0
Property[Data:Color] = {Red, Green, Blue}
Data[Color] = Red
WEX.Examples.CSharpDataDrivenSimpleExample.SetsOfMetadataTest#metadataSet1
Property[Data:Color] = {Red, Green, Blue}
Data[Color] = Green
WEX.Examples.CSharpDataDrivenSimpleExample.SetsOfMetadataTest#metadataSet2
Property[Data:Color] = {Red, Green, Blue}
Data[Color] = Blue