2015-08-07 7 views
24

Sto provando a eseguire i nostri test xUnit utilizzando l'adattatore di test xUnit nella piattaforma Build vNext di Visual Studio Online.Test unità in esecuzione in TFS/VSO Build vNext utilizzando l'adattatore xUnit

Come stabilito in this article, è necessario fornire un percorso dell'adattatore di test personalizzato che punta a xunit.runner.visualstudio.testadapter.dll.

Ma questo pacchetto viene ripristinato da NuGet in una cartella globale dei pacchetti, ovvero C:\Users\{user}\.dnx\packages?

Come faccio a fare riferimento a questa cartella nella fase di creazione?

VSO vNext Build Test Step

Stiamo utilizzando VS 2015 e progetti DNX.

EDIT:

Ho anche provato indicando il percorso del pacchetto DLL direttamente:

C:\Users\buildagent\.dnx\packages\xunit.runner.visualstudio\2.1.0-beta4-build1109\build\_common 

E ancora non sembra utilizzare l'adattatore:

Executing C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe "C:\a\8ac4a4f6\Root\artifacts\bin\MyProject.UnitTest\release\dnx451\TransitApi.UnitTest.dll" /TestAdapterPath:C:\Users\buildguest\.dnx\packages\xunit.runner.visualstudio\2.1.0-beta4-build1109\build\_common /UseVsixExtensions:true /logger:trx 
Microsoft (R) Test Execution Command Line Tool Version 14.0.23107.0 
Copyright (c) Microsoft Corporation. All rights reserved. 
Starting test execution, please wait... 
Warning: No test is available in C:\a\8ac4a4f6\Root\artifacts\bin\MyProject.UnitTest\release\dnx451\TransitApi.UnitTest.dll. Make sure that installed test discoverers & executors, platform & framework version settings are appropriate and try again. 
No results found to publish. 

Il project.json, se rilevante:

"dependencies": { 
    "xunit": "2.1.0-beta4-build3109", 
    "xunit.runner.dnx": "2.1.0-beta4-build134", 
    "xunit.runner.visualstudio": "2.1.0-beta4-build1109" 
}, 

"commands": { 
    "test": "xunit.runner.dnx" 
}, 

"frameworks": { 
    "dnx451": { } 
} 

risposta

6

creare un file global.json e inserire il seguente in esso:

{ 
    "packages": "packages" 
} 

che costringerà il tuo dnu restore per mettere i pacchetti in .\packages\, che si spera di risolvere il problema. Basta specificare il percorso dell'adattatore di prova come $(Build.SourcesDirectory)\packages\ - potrebbe essere necessario specificare il nome completo dell'assembly, non ne sono sicuro.


Update: ho preso il campione "HelloMvc" applicazione e ottenuto di costruire con i test xUnit senza global.json. Ecco la mia definizione di compilazione:

{ 
    "build": [ 
    { 
     "enabled": true, 
     "continueOnError": false, 
     "alwaysRun": false, 
     "displayName": "Restore packages", 
     "task": { 
     "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9", 
     "versionSpec": "*" 
     }, 
     "inputs": { 
     "filename": "$(DNXPath)\\dnu.cmd", 
     "arguments": "restore", 
     "workingFolder": "", 
     "failOnStandardError": "false" 
     } 
    }, 
    { 
     "enabled": true, 
     "continueOnError": false, 
     "alwaysRun": false, 
     "displayName": "Run tests", 
     "task": { 
     "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9", 
     "versionSpec": "*" 
     }, 
     "inputs": { 
     "filename": "$(DNXPath)\\dnx.exe", 
     "arguments": "test", 
     "workingFolder": "", 
     "failOnStandardError": "false" 
     } 
    }, 
    { 
     "enabled": true, 
     "continueOnError": false, 
     "alwaysRun": false, 
     "displayName": "Build NuGet package", 
     "task": { 
     "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9", 
     "versionSpec": "*" 
     }, 
     "inputs": { 
     "filename": "$(DNXPath)\\dnu.cmd", 
     "arguments": "publish", 
     "workingFolder": "", 
     "failOnStandardError": "false" 
     } 
    }, 
    { 
     "enabled": true, 
     "continueOnError": false, 
     "alwaysRun": false, 
     "displayName": "Publish Artifact: drop", 
     "task": { 
     "id": "1d341bb0-2106-458c-8422-d00bcea6512a", 
     "versionSpec": "*" 
     }, 
     "inputs": { 
     "CopyRoot": "", 
     "Contents": "**\\output\\*", 
     "ArtifactName": "drop", 
     "ArtifactType": "FilePath", 
     "TargetPath": "\\\\ic-tfs-fs-01\\TFSBuilds\\$(Build.DefinitionName)\\$(Build.BuildNumber)" 
     } 
    } 
    ], 
    "options": [ 
    { 
     "enabled": false, 
     "definition": { 
     "id": "7c555368-ca64-4199-add6-9ebaf0b0137d" 
     }, 
     "inputs": { 
     "multipliers": "[]", 
     "parallel": "false", 
     "continueOnError": "true" 
     } 
    } 
    ], 
    "variables": { 
    "BuildConfiguration": { 
     "value": "debug", 
     "allowOverride": true 
    }, 
    "BuildPlatform": { 
     "value": "any cpu", 
     "allowOverride": true 
    }, 
    "DNXPath": { 
     "value": "C:\\Users\\tfs-build\\.dnx\\runtimes\\dnx-clr-win-x86.1.0.0-beta7-12335\\bin\\" 
    } 
    }, 
    "retentionRules": [ 
    { 
     "branches": [ 
     "+refs/heads/*" 
     ], 
     "daysToKeep": 10, 
     "deleteBuildRecord": true 
    } 
    ], 
    "_links": { 
    "self": { 
     "href": "http://ic-tfs-at-01:8080/tfs/InCycleEventsCollection/b3284707-3d86-4bc7-b321-b22aee80daca/_apis/build/Definitions/22" 
    }, 
    "web": { 
     "href": "http://ic-tfs-at-01:8080/tfs/_permalink/_build/index?collectionId=0ea6f8c1-f923-47f0-b59a-af6d452d8f7f&projectId=b3284707-3d86-4bc7-b321-b22aee80daca&definitionId=22" 
    } 
    }, 
    "buildNumberFormat": "$(date:yyyyMMdd)$(rev:.r)", 
    "createdDate": "2015-08-12T15:34:17.887Z", 
    "jobAuthorizationScope": 1, 
    "jobTimeoutInMinutes": 60, 
    "repository": { 
    "id": "ee7584f9-ba25-4535-9b5e-5038ec6a39c7", 
    "type": "TfsGit", 
    "name": "AspNet5", 
    "url": "http://ic-tfs-at-01:8080/tfs/InCycleEventsCollection/BTE2015/_git/AspNet5", 
    "defaultBranch": "refs/heads/master", 
    "clean": "false", 
    "checkoutSubmodules": true 
    }, 
    "quality": 1, 
    "authoredBy": { 
    "id": "7f2b1ec7-224f-41de-b679-17e6ef28ce35", 
    "displayName": "ICTFS-Admin", 
    "uniqueName": "AZURE\\ICTFS-Admin", 
    "url": "http://ic-tfs-at-01:8080/tfs/InCycleEventsCollection/_apis/Identities/7f2b1ec7-224f-41de-b679-17e6ef28ce35", 
    "imageUrl": "http://ic-tfs-at-01:8080/tfs/InCycleEventsCollection/_api/_common/identityImage?id=7f2b1ec7-224f-41de-b679-17e6ef28ce35" 
    }, 
    "queue": { 
    "pool": null, 
    "id": 1, 
    "name": "default" 
    }, 
    "uri": "vstfs:///Build/Definition/22", 
    "type": 2, 
    "revision": 6, 
    "id": 22, 
    "name": "ASP .NET 5 app", 
    "url": "http://ic-tfs-at-01:8080/tfs/InCycleEventsCollection/b3284707-3d86-4bc7-b321-b22aee80daca/_apis/build/Definitions/22", 
    "project": { 
    "id": "b3284707-3d86-4bc7-b321-b22aee80daca", 
    "name": "BTE2015", 
    "url": "http://ic-tfs-at-01:8080/tfs/InCycleEventsCollection/_apis/projects/b3284707-3d86-4bc7-b321-b22aee80daca", 
    "state": "wellFormed", 
    "revision": 383343 

Ho il sospetto che il problema è che si sta cercando di utilizzare l'adattatore di prova di Visual Studio.

+1

Grazie per la risposta. Anche se, questo metterà tutti i pacchetti in una cartella locale, che vanifica lo scopo di avere pacchetti globali. Non c'è una soluzione migliore? Non è possibile ripristinare localmente il pacchetto dell'adattatore di test? – davenewza

+1

Inoltre, 'vstest.console.exe' sa di attraversare l'intera directory' packages' per gli adattatori di test? Non devo specificare la cartella esatta in cui risiede 'xunit.runner.visualstudio.testadapter.dll'? – davenewza

1

ho avuto un problema simile a trovare il percorso corretto con l'adattatore di prova NUnit, ecco il percorso che ho usato nella fase di test che ha finito per lavorare per me, può funzionare per voi pure:

"$ (Build .SourceDirectory) [il percorso della cartella dei pacchetti] \ packages \ NUnit3TestAdapter.3.8.0 \ build \ netcoreapp1.0 "

L'adattatore di prova dll si trova nella cartella netcoreapp1.0. Inoltre, TENERE le virgolette sul percorso.