Condividi tramite


Procedura: distribuire file per test

Prima di eseguire un test, il test e l'applicazione devono essere copiati in una posizione in cui possono essere eseguiti, insieme ad altri assembly a cui fanno riferimento. Un test in genere richiede anche file aggiuntivi come dati di test, file di configurazione, un database e assembly caricati in modo esplicito. Per rendere tali file aggiuntivi disponibili per il test, è necessario specificare che devono essere distribuiti.

Dove vengono eseguiti i test?

In Visual Studio 2013 è possibile eseguire i test in diverse ubicazioni:

  • Nella cartella di output della compilazione, in genere <progetto>\bin\Debug.

  • In una cartella di distribuzione del test locale nello stesso computer della compilazione.

  • In un computer remoto. La distribuzione remota viene usata per eseguire test sulle applicazioni Web o distribuite e sulle applicazioni che devono essere eseguite su una determinata piattaforma. Per la distribuzione remota è necessario installare un test controller e agenti di test; in genere i test vengono eseguiti in un ambiente lab. Per altre informazioni sulla distribuzione remota, vedere Procedura: eseguire un test mediante controller e agenti di test.

Come è possibile distribuire i file di test per un test locale?

Di seguito viene riportato il metodo migliore:

  1. Copiare i file nella directory di destinazione della compilazione come parte del processo di compilazione.

    • Se sono specifici di un progetto di test, includerli come file di dati nel progetto di test in Visual Studio. Selezionarli in Esplora soluzioni e impostare la proprietà Copia nella directory di output su Copia se più recente.

    • In caso contrario, definire un'attività di post-compilazione per copiare i file nella directory di output di compilazione. Ad esempio:

      xcopy /Y /S "$(SolutionDir)SharedFiles\*" "$(TargetDir)"
      

      Aprire le proprietà del progetto di test. In un progetto C#, aprire la pagina Eventi di compilazione. In un progetto Visual Basic, aprire la pagina Compila e scegliere Eventi di compilazione. Aggiungere il comando di copia al campo Evento di post-compilazione.

  2. Usare DeploymentItemAttribute sui metodi di test o sulle classi di test per specificare i file e le cartelle da copiare dalla directory di output di compilazione alla directory di distribuzione.

    [TestClass]
    class TestClass1
    {
      [TestMethod]
      [DeploymentItem("source", "targetFolder")]
      public void Test1()
      {
        string testData = System.IO.File.ReadAllText(@"targetFolder\source");
        ...
    } }
    
    <TestClass()> _
    Public Class UnitTest1
        <TestMethod()> _
        <DeploymentItem("source", "targetFolder")> _
        Sub TestMethod1()
            Dim testData As String = _
                System.IO.File.ReadAllText(@"targetFolder\source")
        ...
        End Sub
    End Class
    
    • source è un file o una directory da copiare. Il percorso del progetto può essere assoluto o relativo rispetto alla directory di output di compilazione.

    • targetFolder è un valore facoltativo. Si tratta della directory in cui il contenuto della directory o del file di origine verranno copiati. Il percorso può essere assoluto o relativo rispetto alla directory di distribuzione. Il valore predefinito è ".", la directory di distribuzione.

      Nota

      targetFolder è sempre una directory, mai un percorso di file.Non è possibile modificare il nome del file tramite DeploymentItem.

    È possibile usare l'attributo per il numero di volte desiderato ed è possibile applicarlo a metodi di test o classi di test.

    Quando si seleziona un set di test da eseguire, tutti gli elementi specificati negli attributi DeploymentItem relativi vengono copiati prima dell'esecuzione del test.

  3. Considerare la possibilità di eseguire gli unit test direttamente nella directory di output di compilazione, in modo che l'esecuzione sia più veloce. Ciò è particolarmente utile nel server di compilazione dopo avere archiviato i test.

    A tale scopo, aggiungere un file *.runsettings alla soluzione, includere <DeploymentEnabled>False</DeploymentEnabled> e selezionare il file dal menu Test, Impostazioni test. Lo stesso effetto si verifica nell'esecuzione dei test in cui DeploymentItemAttribute non viene mai usato.

    Non è però possibile evitare di usare una cartella di distribuzione se si usa un file *.testsettings, richiesto per i test Web e i test di carico, i test codificati dell'interfaccia utente e i test in cui si distribuisce un'applicazione in computer remoti.

Che cos'è un file *.runsettings?

È un file con qualsiasi nome ed estensione di file '.runsettings', che viene usato per configurare unit test per alcune finalità. Per crearne uno, copiare l'esempio da Configurazione di unit test mediante un file .runsettings. Inserirlo in una cartella di soluzione e renderlo attivo usando il menu Test>Impostazioni test.

Quando si deve usare un file *.testsettings?

Un file *.testsettings (ovvero un file con qualsiasi nome ed estensione di file '.testsettings') è un'alternativa meno recente a *.runsettings. Per crearne uno, usare la voce del menu Test>Impostazioni test. Salvare il file in una cartella di soluzione e renderlo attivo tramite il menu Test>Impostazioni test.

Evitare, se possibile, di usare un file *.testsettings perché rallenta l'esecuzione degli unit test e non è compatibile con framework di test di terze parti. Non è necessario per gli unit test normali, mentre lo è in questi casi:

Se si usa un file *.testsettings, l'applicazione e gli assembly di test verranno sempre copiati in una cartella di distribuzione.

È possibile specificare directory e file di dati nella pagina Distribuzione dell'editor del file .testsettings. Verranno copiati nella cartella di distribuzione prima dell'esecuzione di ogni test. I percorsi degli elementi specificati in questa pagina sono sempre relativi alla directory della soluzione e vengono sempre distribuiti alla cartella di distribuzione insieme all'applicazione e agli assembly di test.

Se si desidera usare percorsi assoluti o specificare una directory di destinazione diversa, aprire il file .testsettings con l'editor XML e inserire un frammento simile al seguente:

<Deployment>
  <DeploymentItem filename="C:\MyTestData\TestData.mdb"
        outputDirectory="D:\TestDB\" />
</Deployment>

outputDirectory può essere una directory assoluta o relativa rispetto alla directory di distribuzione.

Quando si usa una cartella di distribuzione separata?

Se si eseguono test con Visual Studio, la cartella di distribuzione viene creata in TestResults nella cartella della soluzione.

Una cartella di distribuzione separata viene usata se uno dei metodi o delle classi di test in un'esecuzione di test contiene l'attributo DeploymentItem oppure se si usa un file *.testsettings.

Se viene usata una cartella di distribuzione, i file e le cartelle seguenti vengono copiati nella cartella di distribuzione prima dell'esecuzione dei test:

Cartelle di distribuzione per un'esecuzione dei test locale

Cartella di distribuzione locale per test

Quando vengono distribuiti i file e in quale sequenza?

In un'esecuzione dei test, tutti i file da distribuire vengono copiati prima dell'inizio del primo test. Un'esecuzione di test è un batch di test avviato da un solo comando o evento programmato. Ciò significa che se si specifica un file di dati da distribuire per un determinato metodo di test, esso sarà disponibile per ogni altro test eseguito nella stessa esecuzione.

Gli elementi seguenti vengono copiati, nell'ordine indicato. Gli elementi copiati in un secondo momento sovrascrivono quelli copiati precedentemente, se hanno lo stesso nome.

  1. Elementi specificati con DeploymentItemAttribute.

  2. Dipendenze. Ad esempio, i file di configurazione dell'applicazione e gli assembly dipendenti.

  3. Elementi specificati in un file *.testsettings, se ne viene usato uno.

  4. File binari gestiti con strumenti. Si tratta, ad esempio, di assembly instrumentati per abilitare il code coverage o IntelliTrace.

    Se si usano gli strumenti interni, i file binari vengono gestiti con gli strumenti prima e quindi copiati nella directory di distribuzione; altrimenti, vengono prima copiati e poi gestiti con gli strumenti. La strumentazione sul posto rappresenta l'impostazione predefinita per i test eseguiti localmente.

  5. Il file o i file che comprendono il test. Sono inclusi gli assembly del test, per gli unit test; testo o i file .mht, per i test manuali; altri tipi di file per altri tipi di test, come i test generici.

Cosa contiene la directory TestResults?

  • Cartella dell'esecuzione dei test. TestResults contiene una cartella per ciascuna esecuzione dei test avviata. Il nome include l'ora di creazione.

    Se si specificano script di installazione e pulizia in un file *.testsettings, la cartella di esecuzione dei test conterrà tali script.

  • Out. Ciascuna cartella di esecuzione dei test contiene una cartella denominata Out. La cartella Out è la cartella di distribuzione effettiva, nella quale vengono copiati gli assembly e altri file di distribuzione quando viene avviata l'esecuzione dei test.

  • In. I risultati di code coverage e alcuni altri risultati del test vengono archiviati nella cartella denominata In.

Vedere anche

Riferimenti

DeploymentItemAttribute

Concetti

Strumentazione e ripetizione della firma di assembly

Altre risorse

Specifica delle impostazioni test di Visual Studio