TomRay74
TomRay74

Reputation: 523

No tests discovered using xUnit on ASP.Net Core 1.0 project with build on Visual Studio Team Services Hosted agent

I have a problem where my xUnit tests in my ASP.Net Core 1.0 application are not discovered when building on Visual Studio Team Services.

The test project is being built successfully, but no test results are given. I find the following messages regarding the Visual Studio Test step in the log:

******************************************************************************
Starting task: Test Assemblies **\*test*.dll;-:**\xunit.runner.visualstudio.testadapter.dll
******************************************************************************
Executing the powershell script: C:\LR\MMS\Services\Mms\TaskAgentProvisioner\Tools\agents\default\tasks\VSTest\1.0.29\VSTest.ps1
Working folder: C:\a\1
Executing C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe "C:\a\1\s\artifacts\bin\project.test\Debug\dnx451\project.test.dll"  /EnableCodeCoverage /InIsolation /logger:trx
Microsoft (R) Test Execution Command Line Tool Version 14.0.24720.0
Copyright (c) Microsoft Corporation.  All rights reserved.
Starting test execution, please wait...
Warning: No test is available in C:\a\1\s\artifacts\bin\project.test\Debug\dnx451\project.test.dll. Make sure that installed test discoverers & executors, platform & framework version settings are appropriate and try again.
Attachments:
  C:\a\1\TestResults\0ad44b11-4dd4-41ba-a0bf-66d9cd487a3c\buildguest_TASKAGENT5-0007 2016-03-01 07_33_04.coverage
Information: Additionally, you can try specifying '/UseVsixExtensions' command if the test discoverer & executor is installed on the machine as vsix extensions and your installation supports vsix extensions. Example: vstest.console.exe myTests.dll /UseVsixExtensions:true
No results found to publish.

The tests are written like this:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using Xunit;

namespace project.tests
{
    public class ProjectTests
    {
        [Fact]
        public void PassingTest()
        {
            Assert.Equal(4, Add(2, 2));
        }

        [Fact]
        public void FailingTest()
        {
            Assert.Equal(5, Add(2, 2));
        }

        int Add(int x, int y)
        {
            return x + y;
        }
    }
}

The tests run just fine locally, but not on Visual Studio Team Services.

For reference, this is my project.json

{
  "authors": [ "Tom Reiertsen" ],
  "commands": {
    "test": "xunit.runner.dnx"
  },
  "dependencies": {
    "project": "1.0.0-rc1-update1",
    "Microsoft.AspNet.Hosting": "1.0.0-rc1-final",
    "Microsoft.AspNet.TestHost": "1.0.0-rc1-final",
    "Microsoft.AspNet.WebApi.Client": "5.2.3",
    "Microsoft.CSharp": "4.0.1-beta-23516",
    "System.Collections": "4.0.11-beta-23516",
    "System.Linq": "4.0.1-beta-23516",
    "System.Runtime": "4.0.21-beta-23516",
    "System.Threading": "4.0.11-beta-23516",
    "xunit": "2.1.0",
    "xunit.runner.dnx": "2.1.0-rc1-build204",
    "xunit.runner.visualstudio": "2.1.0"
  },
  "description": "project.test Class Library",
  "frameworks": {
    "dnx451": { }
  },
  "licenseUrl": "",
  "projectUrl": "",
  "tags": [ "" ],
  "version": "1.0.0-rc1-update1"
}

Upvotes: 3

Views: 2229

Answers (3)

ben yip
ben yip

Reputation: 117

Someone posted this, i try this and it works http://blogs.perficient.com/microsoft/2016/08/unit-test-with-net-core-and-vsts/

  1. In Execution Options -> Test Assembly, put **\test**\project.json
  2. In Advance Execution Options -> Other Console Option, put /UseVsixExtensions:true /logger:trx

enter image description here

enter image description here

and the final result in visual studio team service enter image description here

Upvotes: 0

allen
allen

Reputation: 4647

The tests are not getting discovered since the xunit test adapter for vstest was not found. Here is what you can do

  1. add the xunit test adapter nuget reference to your test project
  2. add the restore nuget packages as the first step in your build definition

vstest should not be able to detect your xunit test adapter and then discover and execute the xunit tests

Upvotes: 0

Eddie Chen - MSFT
Eddie Chen - MSFT

Reputation: 29976

Enter "$(Build.SourcesDirectory)\SolutionFolderName\packages" in "Advanced Execution Options\Path to Custom Test Adapters" to set the test adapter to xUnit. Refer to this link for details: xUnit or NUnit with Visual Studio Online Build

Update: I just create a sample app to test this and get the same issue with you. However, if I copy the xunit assembly files into "dnx451" folder together with test.dll, the test will be completed successfully. enter image description here enter image description here

And since you are working on a Asp.Net Core project and has imported DNX runner, you can also add a "Command Line" task to use dnx test command to run the testing directly. enter image description here

Upvotes: 1

Related Questions