3

我正在开始一个新的 ASP.net vNext / MVC6 项目,我想使用 xUnit 来测试它。

对于 DNX 项目,我已按照xUnit 网站上的说明进行操作。

当我尝试使用内置运行程序或 ReSharper 在 Visual Studio 中运行测试时,我收到以下错误消息:

测试运行错误消息

如果我尝试从命令行运行测试,我会得到:

xUnit.net DNX Runner(32 位 DNX 4.5.1)
  发现:TA.Product.Tests
  发现:TA.Product.Tests
  开始:TA.Product.Tests
    TA.Product.Tests.Class1.FactMethodName [失败]
      System.NullReferenceException :对象引用未设置为对象的实例。
      堆栈跟踪:
        D:\VS-Projects\TA.Product\src\TA.Product.Tests\Class1.cs(25,0):在 TA.Product.Tests.Class1.FactMethodName()
  完成:TA.Product.Tests
=== 测试执行总结 ===
   TA.Product.Tests Total: 1, Errors: 0, Failed: 1, Skipped: 0, Time: 2.216s

这是我的project.json文件:

{
  "version": "1.0.0-*",
  "description": "TA.Product.Tests Class Library",
  "authors": [ "Tim" ],
  "tags": [ "" ],
  "projectUrl": "",
  "licenseUrl": "",
  "dependencies": {
    "TA.Product": "1.0.0-*",
    "xunit": "2.1.0",
    "xunit.runner.dnx": "2.1.0-rc1-build204"
  },
  "commands": {
    "test": "xunit.runner.dnx"
  },
  "frameworks": {
    "dnx451": { },
    "dnxcore50": {
      "dependencies": {
        "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 runner 版本似乎与我的 DNX 版本 RC1-Update1 匹配。

我还发现这个问题说我的测试必须是公开的,而且确实如此。

一个想法,好吗?

4

1 回答 1

1

当您从命令行运行dnx test并获得以下结果时:

Finished:    TA.Product.Tests
=== TEST EXECUTION SUMMARY ===
   TA.Product.Tests  Total: 1, Errors: 0, Failed: 1, Skipped: 0, Time: 2.216s

...这实际上是一次成功的试运行。唯一的问题是你的 1 测试失败了。

我想当它“崩溃”时,您正在尝试使用 ReSharper xUnit 运行器扩展来运行。该运行程序目前(从 rc1 开始)不能与 DNX 项目一起使用,因为 R# 在不存在的位置查找已编译的测试程序集。尝试禁用 resharper xUnit 运行器扩展并从默认的 Visual Studio 测试资源管理器运行测试。它应该工作。

然后,当您需要运行测试时,不要使用任何 R# 按钮或快捷方式。改用内置的 VS 测试按钮和命令(或者只从命令行运行dnx test,这应该更快)。弄清楚后,您可以为其他非 DNX 项目重新启用 R# xunit 运行器。

于 2016-02-29T03:51:57.010 回答