Esecuzione di test di unità Universal Windows dalla riga di comando

Come si eseguono i progetti di test dell’unità Universal Windows (UWP) dalla riga di comando?

Sto usando il MSTestFramework.

Risposta breve:

vstest.console.exe /Platform:x64 AppPackages\UnitTestProject1_1.0.0.0_x64_Debug_Test\UnitTestProject1_1.0.0.0_x64_Debug.appx 

Risposta lunga:

  1. Creare il progetto selezionando il modello di Universal / Unit Test App (Universal Windows):

    inserisci la descrizione dell'immagine qui

  2. Costruiscila con la riga di comando usando nella cartella in cui si trova il file della soluzione

    msbuild /p:Platform=x64;Configuration=Debug

  3. Prova a eseguire il comando vstest.console.exe sopra, nella risposta breve. Fallirà, dando il seguente messaggio di errore:

     error 0x800B0109: The root certificate of the signature in the app package or bundle must be trusted.. For more details look into Event Viewer under Applications and Services Logs -> Microsoft -> Windows -> AppXDeployment-Server -> Microsoft-Windows-AppXDeploymentServer/Operational. 
  4. Per essere in grado di eseguire test dalla riga di comando, è necessario utilizzare un certificato che abbia una radice attendibile o rendere attendibile il certificato generato da Visual Studio. Per quest’ultimo, fare doppio clic UnitTestProject1_TemporaryKey.pfx file UnitTestProject1_TemporaryKey.pfx da windows explorer e seguire i passaggi predefiniti di importazione guidata, ma cambiare due cose:

    • Imposta la posizione del negozio sulla macchina locale: inserisci la descrizione dell'immagine qui
    • Inserire il certificato nell’archivio Autorità di certificazione fonti attendibili: inserisci la descrizione dell'immagine qui
    • Finire il wizard dovrebbe dire “L’importazione ha avuto successo”.
  5. Prova a eseguire vstest.console.exe utilizzando i parametri nella risposta breve, e ora dovrebbe eseguire tutti i test.

Ho seguito la risposta di Ivan Marinov, ma avevo bisogno di una soluzione puramente a linea di comando. Una volta che il tuo UWP Unit Test Project funziona e sei pronto per automatizzare, segui questi passaggi:

(Ho chiamato la mia soluzione Win10Universal e il mio progetto di test unitario Win10-UnitTests. Dovrai sostituire i nomi dei miei esempi con i tuoi)

  1. Apri Prompt dei comandi come amministratore e naviga nella stessa directory della soluzione.

  2. Esegui MSBuild.exe sulla tua soluzione.

>"C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe" Win10Universal.sln /p:Platform=x86;Configuration=Release

  1. Il processo di generazione genererà una directory simile a {SolutionDirectory} / AppPackages / {UnitTestTargetProjectName} / {Something_Test} . Naviga in questa directory e all’interno vedrai un certificato di sicurezza .cer.

>cd AppPackages/Win10-UnitTests/Win10-UnitTests_1.1.0.0._x86_Test

  1. Esegui CertMgr.exe su questo certificato generato. Questo passaggio avrà esito negativo se non si esegue il prompt dei comandi con i privilegi di amministratore.

>"C:\Program Files (x86)\Windows Kits\10\bin\x86\certmgr.exe" -add Win10-UnitTests_1.1.0.0_x86_Release.cer -s -r localmachine root

  1. Esegui VSTest.Console.exe sul file .appx in questa directory.

>"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe" Win10-UnitTests_1.1.0.0_x86_Release.appx /Platform:x86

Dovresti vedere i tuoi test unitari elencati nella finestra se hai fatto tutto bene! Spero che questo ti aiuti!

Seguito da @Marinov, UWP non supporta attualmente il test dell’app . Solo la libreria può essere testabile.

Quindi, se si desidera eseguire un test unitario in UWP, è necessario estrarre i codici logici dal progetto App e riversarli nel progetto di libreria appena creato. Il progetto di test e il progetto dell’app originale potrebbero essere referenziati in seguito.