Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
È probabile che si verifichino scenari in cui un'origine dati XML completa e un test basato su tabelle basate su dati potrebbero essere troppo pesanti per le esigenze dello scenario di test. I test basati sui dati leggeri consentono di ottenere un supporto rapido e semplice per i test basati sui dati quando i dati per il test sono semplici e possono essere facilmente espressi come metadati. Si userà un esempio e si vedrà come.
I dati per il test basato sui dati di peso leggero vengono espressi come set di metadati (a livello di test, classe o modulo). Per ognuno dei valori di questo set, i metodi di test in questione, insieme ai metodi di installazione e di disinstallazione associati verranno eseguiti per ogni valore nel set. Di seguito viene illustrato come creare questo codice nel codice nativo:
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 };
Si notino i valori dei parametri per TEST_METHOD_PROPERTY nella riga 14. Il valore dei metadati di test inizia con "{" e termina con un "}" che indica che è stato specificato un elenco delimitato da virgole o punto e virgola di valori. TAEF eseguirà nuovamente il metodo di test in questione, SetsOfDataTest() una volta per ogni valore in questo set.
Si noti anche che il nome dei metadati inizia con "Data:". Ciò implica che il set di metadati specifica effettivamente le varianti per i parametri di test basati sui dati e sarebbe disponibile per il metodo di test effettivo in modo molto simile ai parametri di dati di un test basato su tabelle, come illustrato di seguito:
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 */
Durante l'uso del codice gestito, la specifica e il recupero del set di dati è molto simile all'esempio nativo. Diamo un'occhiata:
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 }
Proprio come nel caso di test basati su dati basati su tabelle, set di dati specificati come metadati, consentirà il recupero tramite TestContext.DataRow. Si noti che per mantenere il peso leggero del test basato sui dati, il tipo di parametro sarà sempre WEX::Common::String (in codice nativo) e String(nel codice gestito)
Se vengono specificati più valori di dati, verrà ottenuto un prodotto cartesiano di tutti i valori possibili e verrà richiamato il metodo di test per ogni combinazione.
È inoltre possibile avere alcuni set di metadati(ad esempio set di metadati ThreadingModel) e set di dati specificati per lo stesso metodo di test. In tal caso, un'espansione combinatoriale di tutti i set di metadati e i set di dati verranno generati da TAEF e i metodi di test in questione verranno richiamati con ogni combinazione.
Casi speciali: test basato sui dati con set di metadati o dati
È possibile avere un metodo di test dipendente dal test basato su tabella basato sui dati, nonché specificare un set di dati o metadati per esso. Ad esempio, un metodo di test potrebbe avere parametri "size" e "color" specificati nel test basato sui dati basati sulla tabella e si vuole che tutte le righe vengano eseguite una volta con il parametro "trasparenza" impostato su true e quindi impostato su false. In questo caso, è possibile specificare "trasparenza" come set "{true, false}" per il test basato sui dati. È importante notare che in caso di conflitti di parametri in un set di metadati, la riga basata su dati basata su tabella, il tipo di parametro a livello di riga e il valore sostituiranno il valore del set di metadati.
Esecuzione di test con set di dati/metadati
L'esecuzione di test contenenti set di dati è piuttosto intuitiva. Di seguito viene esaminato l'output /listproperties per i test di esempio:
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
Si notino le righe 7, 12 e 17 nell'esempio precedente. Un indice del set di metadati viene aggiunto a ogni chiamata del metodo di test con il valore nel set di dati. Questo indice è del formato:
<namespace qualified test method name>#metadataSet<metadataIndex>
Le righe 8, 13 e 18 mostrano il set di metadati specificato per questo supporto di test leggero basato sui dati. In questo caso il set è costituito da colori viola, maroon e marrone. Le righe 10, 15 e 20 mostrano il valore effettivo di questo set attivo per la chiamata corrente del test. Nel caso di SetsOfMetadataTest#metadataSet1, la seconda chiamata di questo metodo, il valore del parametro attivo del set è "Maroon"
È possibile selezionare il valore dati o il nome proprio come nei test basati su dati basati su tabelle. Ad esempio, è possibile selezionare SetsOfDataTest#metadataSet1 per una query di selezione come /select:@Data:Color='Maroon' o /name:*#metadataSet1
Per riferimento rapido, l'output /listproperties dell'esempio di test gestito è illustrato di seguito:
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