2015-08-07 9 views
24

Ich versuche, unsere xUnit Tests mit dem xUnit Prüfadapter in Visual Studio Online ist Build-vNext-Plattform zu laufen. Wie in this article festgelegt, müssen wir einen benutzerdefinierten Testadapterpfad bereitstellen, der auf xunit.runner.visualstudio.testadapter.dll zeigt.Lauf Unit-Tests in TFS/VSO Bauen vNext mit xUnit Adapter

Aber dieses Paket wird von NuGet zu einem globalen Paket Ordner gestellt, nämlich C:\Users\{user}\.dnx\packages?

Wie bin ich diesen Ordner in den Build-Schritt verweisen?

VSO vNext Build Test Step

Wir verwenden VS 2015 und DNX-Projekte.

EDIT:

Ich habe versucht, auch dem Paketpfad zeigt DLL direkt:

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

Es ist immer noch schien nicht den Adapter zu verwenden:

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. 

Die project.json, wenn relevant:

"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": { } 
} 

Antwort

6

Machen Sie eine global.json Datei und fügen Sie den folgenden hinein:

{ 
    "packages": "packages" 
} 

Das Ihre dnu restore zwingen wird, die Pakete in .\packages\, die setzen wird hoffentlich das Problem lösen. Geben Sie einfach den Pfad des Testadapters als $(Build.SourcesDirectory)\packages\ an - Sie müssen möglicherweise den vollständigen Assemblynamen angeben, da bin ich mir nicht sicher.


Update: Ich habe die Probe "HelloMvc" Anwendung und bekam es mit xUnit Tests ohne global.json zu bauen. Hier ist meine Builddefinition:

{ 
    "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 

Ich vermute, dass das Problem ist, dass Sie versuchen, das Visual Studio-Testadapter zu verwenden.

+1

Danke für die Antwort. Dadurch werden jedoch alle Pakete in einen lokalen Ordner verschoben, was den Zweck globaler Pakete zunichte macht. Gibt es keine bessere Lösung? Können wir nicht einfach das Testadapterpaket lokal wiederherstellen lassen? – davenewza

+1

Würde "vstest.console.exe" auch das gesamte Packages-Verzeichnis für Testadapter durchqueren? Muss ich nicht den genauen Ordner angeben, in dem sich 'xunit.runner.visualstudio.testadapter.dll' befindet? – davenewza

1

Ich hatte ein ähnliches Problem den richtigen Pfad mit dem NUnit Testadapter zu finden, hier ist der Weg, den ich im Prüfschritt verwendet, die für mich am Ende arbeiten, auch für Sie arbeiten kann:

„$ (Build .SourcesDirectory) [Ihr Pfad zum Paketordner] \ packages \ NUnit3TestAdapter.3.8.0 \ build \ netcoreapp1.0 "

Die Testadapter-DLL befindet sich im Ordner netcoreapp1.0. Halten Sie außerdem die Anführungszeichen um den Pfad.