3

我有一个问题,在 Visual Studio Team Services 上构建时,我的 ASP.Net Core 1.0 应用程序中的 xUnit 测试没有被发现。

测试项目正在构建成功,但没有给出测试结果。我在日志中发现以下有关 Visual Studio 测试步骤的消息:

******************************************************************************
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.

测试是这样写的:

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;
        }
    }
}

测试在本地运行得很好,但不是在 Visual Studio Team Services 上。

作为参考,这是我的 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"
}
4

3 回答 3

1

在“Advanced Execution Options\Path to Custom Test Adapters”中输入“$(Build.SourcesDirectory)\SolutionFolderName\packages”,将测试适配器设置为xUnit。有关详细信息,请参阅此链接:xUnit 或 NUnit with Visual Studio Online Build

更新:我只是创建了一个示例应用程序来测试它并与您遇到相同的问题。但是,如果我将 xunit 程序集文件与 test.dll 一起复制到“dnx451”文件夹中,则测试将成功完成。 在此处输入图像描述 在此处输入图像描述

由于您正在处理 Asp.Net Core 项目并已导入 DNX 运行器,您还可以添加“命令行”任务以使用 dnx test 命令直接运行测试。 在此处输入图像描述

于 2016-03-01T09:54:53.910 回答
0

由于未找到用于 vstest 的 xunit 测试适配器,因此未发现测试。这是你可以做的

  1. xunit 测试适配器 nuget引用添加到您的测试项目
  2. 添加还原 nuget 包作为构建定义中的第一步

vstest 应该无法检测到您的 xunit 测试适配器,然后发现并执行 xunit 测试

于 2016-03-04T03:52:10.010 回答
0

有人发布了这个,我试试这个,它可以工作 http://blogs.perficient.com/microsoft/2016/08/unit-test-with-net-core-and-vsts/

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

在此处输入图像描述

在此处输入图像描述

以及视觉工作室团队服务的最终结果 在此处输入图像描述

于 2016-12-20T05:11:40.780 回答