unit-testing - Visual Studio 2015 RC1 Update 1 中的 XUnit 找不到测试

标签 unit-testing asp.net-core xunit dnx

我使用预览模板在 Visual Studio 2015 中创建了一个 ASP.NET 5 项目。我通过 NuGet 安装了 XUnit,并在我的解决方案中添加了一个“xUnit 测试项目 (DNX)”。

但我的测试资源管理器什么也没显示,即使我在 Class1.cs 中有一个公共(public)的“事实”测试方法。当我“运行所有测试”时,“测试”输出窗口是空白的。我的“构建”输出窗口显示 2 个项目构建成功。 (我的 ASP.NET 5 项目和我的 xUnit 项目。)

但是,当我构建或清理我的解决方案时,我在“测试”输出窗口中收到以下消息:

------ Discover test started ------
------ Test started: Project: MyProjectTest ------
Starting  Microsoft.Dnx.TestHost [C:\Users\xxxxxx\.dnx\runtimes\dnx-clr-win-x86.1.0.0-rc1-update1\bin\dnx.exe --appbase "C:\Users\xxxxxx\Documents\GitForWindows\Repositories\MySolution\MyProjectTest" Microsoft.Dnx.ApplicationHost --port 8424 Microsoft.Dnx.TestHost --port 8458 --parentProcessId 17312]

System.NullReferenceException: Object reference not set to an instance of an object.
   at Microsoft.Dnx.TestHost.Program.<>c__DisplayClass2_0.<<Main>b__0>d.MoveNext()
Unable to start Microsoft.Dnx.TestHost
========== Discover test finished: 0 found (0:00:01.057196) ==========

根据两个项目的属性窗口,我的解决方案 DNX SDK 版本是 1.0.0-rc1-update1。我还通过 dnvm 将其设置为“事件”运行时,上述行为没有变化。不过,我不明白有关从命令行运行 DNX 的说明,所以也许这是一个起点?

当我尝试将 DNX SDK 切换到 1.0.0-beta5 并清理解决方案时,我得到:

------ Discover test started ------
------ Test started: Project: MyProjectTest ------
Starting  Microsoft.Framework.TestHost [C:\Users\xxxxx\.dnx\runtimes\dnx-clr-win-x86.1.0.0-beta5\bin\dnx.exe --appbase "C:\Users\xxxxxx\Documents\GitForWindows\Repositories\MySolution\MyProjectTest" Microsoft.Framework.ApplicationHost --port 9737 Microsoft.Framework.TestHost --port 9770 --parentProcessId 16732]

System.InvalidOperationException: Failed to resolve the following dependencies for target framework 'DNX,Version=v4.5.1':
   xunit 2.1.0
   xunit.runner.dnx 2.1.0-beta6-build191

Searched Locations:
  C:\Users\xxxxx\Documents\GitForWindows\Repositories\MySolution\{name}\project.json
  C:\Users\xxxxx\Documents\GitForWindows\Repositories\MySolution\src\{name}\project.json
  C:\Users\xxxxx\Documents\GitForWindows\Repositories\MySolution\test\{name}\project.json
  C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\{name}.dll
  C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\Facades\{name}.dll
  C:\Windows\Microsoft.NET\assembly\GAC_32\{name}\{version}\{name}.dll
  C:\Windows\Microsoft.NET\assembly\GAC_64\{name}\{version}\{name}.dll
  C:\Windows\Microsoft.NET\assembly\GAC_MSIL\{name}\{version}\{name}.dll

Try running 'dnu restore'.

   at Microsoft.Framework.Runtime.DefaultHost.GetEntryPoint(String applicationName)
   at Microsoft.Framework.ApplicationHost.Program.ExecuteMain(DefaultHost host, String applicationName, String[] args)
   at Microsoft.Framework.ApplicationHost.Program.Main(String[] args)
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at Microsoft.Framework.Runtime.Common.EntryPointExecutor.Execute(Assembly assembly, String[] args, IServiceProvider serviceProvider)
   at dnx.host.Bootstrapper.RunAsync(List`1 args, IRuntimeEnvironment env)
   at dnx.host.RuntimeBootstrapper.ExecuteAsync(String[] args)
   at dnx.host.RuntimeBootstrapper.Execute(String[] args)
Unable to start Microsoft.Framework.TestHost
========== Discover test finished: 0 found (0:00:01.4699978) ==========

运行 DNU 恢复不会解决任何问题。

编辑:这是请求的 project.json:

{
  "version": "1.0.0-*",
  "description": "",
  "authors": [ "" ],
  "tags": [ "" ],
  "projectUrl": "",
  "licenseUrl": "",

  "dependencies": {
    "xunit": "2.1.0",
    "xunit.runner.dnx": "2.1.0-beta6-build191"
  },
  "commands": {
    "test": "xunit.runner.dnx"
  },

  "frameworks" : {
    "dnx451": { },
    "dnxcore50" : {
      "dependencies": {
        "System.Collections": "4.0.11-beta-23225",
        "System.Linq": "4.0.1-beta-23225",
        "System.Threading": "4.0.11-beta-23225",
        "Microsoft.CSharp": "4.0.1-beta-23225"
      }
    }
  }
}

最佳答案

您需要使用与 dnx 匹配的 xUnit 运行器版本。对于 dxn RC1,您需要使用 xunit.runner.dnx 的 2.1.0-rc1-build204 版本

关于unit-testing - Visual Studio 2015 RC1 Update 1 中的 XUnit 找不到测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34100464/

相关文章:

c# - 在 ASP.NET Core 2 中获取 "SessionOptions.CookieName is obsolete"

asp.net-core - 如何在不访问请求的情况下获取基本网址

c# - ASP.NET Core 测试 - 在夹具中初始化 InMemory SQLite dbcontext 时获取 NullReferenceException

unit-testing - 单元测试 - 测试用例与多种方法

java - 为单元测试生成值

c# - ASP.NET Core - 如何检测 IHostedService 是否在运行时崩溃?我可以重新启动它吗?

c++ - 谷歌模拟 : How to copy memory from a pointer in a mock argument?

c# - 使用 Moq 和 C# 调用作为参数传递给模拟的 Func

javascript - 具有 Store 调度操作的 Angular 单元测试组件

unit-testing - 使用 Laravel 测试模型验证时遇到问题