Condividi tramite


Metadati di DeploymentItem

I metadati deploymentItem identificano le dipendenze dei file e delle cartelle per i file e le cartelle usati dai test durante l'esecuzione dei test in modo che Taef possa identificarli e copiarli in modo appropriato (ad esempio, in uno scenario di esecuzione tra computer, Taef distribuisce i file identificati dalla proprietà DeploymentItem nel computer di test specificato).

L'implementazione di Taef DeploymentItem è molto simile a quella trovata nella classe DeploymentItemAttribute in VSTS.

I metadati di DeploymentItem possono essere applicati a livello di assembly, classe o test. Gli elementi specificati dai metadati deploymentItem verranno distribuiti dal programma di installazione del corrispondente dell'ora (assembly, classe di test o test). Se i metadati deploymentItem specificano una dipendenza (ad esempio un file) e che la dipendenza esiste già nella destinazione, TAEF esegue un confronto CRC e copia solo il file se è stato modificato. Se i metadati deploymentItem specificano una dipendenza e non è possibile trovare la dipendenza, viene registrato un errore che avrà esito negativo nel test (o tutti i test di test o assembly, di conseguenza). TAEF distribuisce solo i file una sola volta per assembly, classe o test, ovvero la distribuzione non si verifica in ogni assembly, classe o espansione di test se sono basati sui dati.

Sintassi

[DeploymentItem("FileOrFolderToDeploy", "DestinationFolder")]

dove FileOrFolderToDeployè un file o un percorso di cartella relativo alla directory in cui è la dll di test. Se FileOrFolderToDeploy è una cartella, tutto il contenuto viene copiato; tuttavia, la cartella stessa non viene creata. Se esiste una gerarchia di cartelle in FileOrFolderToDeploy, Taef copia tutte queste directory in modo ricorsivo, mantenendo la gerarchia di directory.

DestinationFolder è un percorso di cartella relativo alla directory in cui si trova la dll di test e dove vengono copiati gli elementi di distribuzione. Il percorso DestinationFolder può essere specificato usando .. notazione (ad esempio, .. \MyFiles).

Per distribuire nella cartella in cui si trova la dll di test, è possibile omettere DestinationFolder.

[DeploymentItem("FileOrFolderToDeploy")]

Sono supportate più parti della proprietà. Ad esempio:

[TestClass]
[DeploymentItem("file1.xml")]
[DeploymentItem("file2.xml")]
[DeploymentItem("file3.xml")]
public class UnitTest1
{
    ...
}

Esempi

[DeploymentItem("file1.xml")]  

I tag file1.xml che si trovano accanto alla dll di test come dipendenza. Questi metadati possono essere interpretati come che il sistema distribuisce un elemento denominato file1.xml situato nella cartella accanto alla dll di test nella directory dll di test. Questa configurazione è utile solo per lo scenario tra computer.

[DeploymentItem("file2.xml", "DataFiles")]

Distribuisce un elemento denominato file2.xml situato accanto alla dll di test nella sottodirectory DataFiles creata nella directory dll di test.

[DeploymentItem("C:\\\\MyDataFiles\\\\MyDataFiles2\\\\")]  

Distribuisce tutti gli elementi e le directory presenti nella directory C:\\MyDataFiles\\MyDataFiles2\\ . Questa configurazione non crea la directory MyDataFiles\MyDataFiles2 sotto la directory di distribuzione. Tutti i file e le directory all'interno di MyDataFiles verranno distribuiti per testare la directory dll. Per copiare l'intera struttura di directory MyDataFiles\MyDataFiles2, è necessario specificare MyDataFiles\MyDataFiles2 come directory di output.

[DeploymentItem("%myDir%\\myFile.txt")]

Distribuisce il file myFile.txt se tale file esiste nella directory in cui viene risolto %myDir%. Se TAEF non è in grado di risolvere la variabile di ambiente, genera un errore.

Test gestiti

L'attributo DeploymentItem (aka DeploymentItemAttribute ) può essere applicato a un metodo di test (decorato da [TestMethod] attributo), classe di test (decorata dall'attributo [TestClass] o assembly di test. Tuttavia, poiché VSTS non supporta questa proprietà a livello di assembly, per applicare questa proprietà a livello di assembly, è necessario applicarla all'installazione dell'assembly (decorata dall'attributo AssemblyInitialize):

[AssemblyInitialize]
[DeploymentItem("file1.xml")]
[DeploymentItem("file2.xml")]
[DeploymentItem("file3.xml")]
public  static AssemblySetup(TestContext testContext)
{
    ...
}

Test nativi

Per i test nativi, il formato della proprietà è simile al formato del codice gestito. Tuttavia, poiché le proprietà native hanno solo un singolo valore, il percorso dell'elemento e la destinazione facoltativa vengono specificati nel valore della proprietà, separati con un carattere '>':

BEGIN_TEST_CLASS(TestClassExample)
    TEST_CLASS_PROPERTY(L"DeploymentItem", L"C:\\Dependencies\\>Dependencies")
END_TEST_CLASS()

Test script

Per i test di script, il formato della proprietà è lo stesso per i test nativi:

<method name="TestOne">
    <TestMethodProperty name="DeploymentItem" value="C:\\Dependencies\\>Dependencies"/>
</method>