3

I am running API e2e tests in VSTS 2017 CD tasks and getting below error at the task (vsTest - End2End Tests)

Unable to find d:\a\r1\a\Project\e2e\bin\Release\netcoreapp2.1\testhost.dll. Please publish your test project and retry.
Unable to find d:\a\r1\a\Project\e2e\obj\Release\netcoreapp2.1\Project.EndToEnd.Integration.Test.deps.json. Make sure test project has a nuget reference of package "Microsoft.NET.Test.Sdk". 

I have below nuget packages in my e2e prject.

<PackageReference Include="FluentAssertions" Version="5.6.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.9.0" />
<PackageReference Include="Microsoft.TestPlatform.TestHost" Version="15.9.0" />
<PackageReference Include="Newtonsoft.Json" Version="12.0.1" />
<PackageReference Include="TestStack.BDDfy" Version="4.3.2" />
<PackageReference Include="TestStack.BDDfy.Xunit" Version="1.0.0" />
<PackageReference Include="xunit" Version="2.4.1" />
<PackageReference Include="xunit.core" Version="2.4.1" />
<PackageReference Include="xunit.extensibility.core" Version="2.4.1" />
<PackageReference Include="xunit.extensibility.execution" Version="2.4.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.1">

My project target framework is .Net Core 2.1

As per this I believe everything in place. Not sure what is missing?

VSTS Task

enter image description here

Build.yaml (section)

- task: CopyFiles@2
      displayName: "Copy Files to: $(Build.ArtifactStagingDirectory)"
      inputs: 
        contents: "D:/a/1/s/src/xxx.EndToEnd.Integration.Tests/**"
        targetFolder: $(Build.ArtifactStagingDirectory)

- task: DotNetCoreCLI@2
     displayName: "dotnet e2e tests"
     inputs: 
       command: publish
       projects: $(Build.ArtifactStagingDirectory)/src/xxx.EndToEnd.Integration.Tests/xxx.EndToEnd.Integration.Tests.csproj
       arguments : --no-build

    - task: PublishBuildArtifacts@1
      displayName: "Publish End-to-End Tests"
      inputs: 
        artifactName: e2e
        artifactType: container
        pathToPublish: $(Build.ArtifactStagingDirectory)/src/xxx.EndToEnd.Integration.Tests
9
  • Apparently Microsoft.TestPlatform.TestHost and Microsoft.NET.Test.Sdk is supported up to .NetCoreApp Version=v1.0 Is this the issue? Commented Feb 20, 2019 at 4:15
  • Running into the same issue, any update on this? All documentation I can find on the subject states that you should do a dotnet publish on the project in order to solve the issue, but since I'm trying to run the tests based on the build output of all test projects this doesn't seem practical (I'm guessing you are doing the same thing?) Commented Feb 25, 2019 at 20:20
  • 1
    I've created an issue for this on github: github.com/Microsoft/vstest/issues/1928 Commented Feb 25, 2019 at 20:36
  • @WouterRoos In the above issue you raised, as the answer specified dotnet publish. Can you please elaborate on that? I added what I have in my build.yaml Commented Mar 31, 2019 at 5:25
  • 1
    they recommend publishing all net core test projects using dotnet publish, which will include all necessary binaries needed to run the tests using the vstest task. I currently use the DotNetCoreCLI@2 step with command set to publish, use a minimatch pattern for the projects argument that captures all netcore test projects in the solution and using --no-build as arguments since my solution has already been built at that point. Commented Apr 1, 2019 at 7:41

2 Answers 2

2

There are two ways you can handle this.

  1. Publish your project. This makes sure that the test dll and all the dependencies get dropped in a folder. You can give path to this published location and run your test.

  2. You can use the dotnet cli task. If you are using a YAML definition add task as follows:

    - task: DotNetCoreCLI@2
      displayName: 'dotnet test'
      inputs:
        command: test
        projects: '**/*.Tests/*.csproj'
    

Refer: Dotnet CLI task

Sign up to request clarification or add additional context in comments.

1 Comment

I tried the second part which is yaml task. it tries to run the test as part of the build, which is not the intention.
1

Below build.yaml tasks have done the job

- task: DotNetCoreCLI@2
      displayName: "dotnet e2e tests"
      inputs:
        command: publish
        publishWebProjects: false
        projects: '**/**/*.EndToEnd.Integration.Tests.csproj'
        arguments: --output $(Build.ArtifactStagingDirectory)
        zipAfterPublish: false

    - task: PublishBuildArtifacts@1
      displayName: "Publish End-to-End Tests"
      inputs: 
        artifactName: e2e
        PathtoPublish: '$(Build.ArtifactStagingDirectory)'

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.