为什么xUnit找不到我的DNX测试?

时间:2016-02-23 18:02:01

标签: asp.net-mvc asp.net-core-mvc xunit.net dnx50

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

我已经关注DNX项目的instructions on the xUnit web site

当我尝试在Visual Studio中运行测试时,无论是使用内置运行程序还是在ReSharper中,我收到此错误消息:

Test Runner error message

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

xUnit.net DNX Runner (32-bit DNX 4.5.1)
  Discovering: TA.Product.Tests
  Discovered:  TA.Product.Tests
  Starting:    TA.Product.Tests
    TA.Product.Tests.Class1.FactMethodName [FAIL]
      System.NullReferenceException : Object reference not set to an instance of an object.
      Stack Trace:
        D:\VS-Projects\TA.Product\src\TA.Product.Tests\Class1.cs(25,0): at TA.Product.Tests.Class1.FactMethodName()
  Finished:    TA.Product.Tests
=== TEST EXECUTION SUMMARY ===
   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"
      }
    }
  }
}

我找到this question,我的xUnit运行版似乎与我的DNX版本RC1-Update1匹配。

我还发现this question表示我的测试必须是公开的,而且它们是公开的。

请问一个想法?

1 个答案:

答案 0 :(得分: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 runner扩展运行。该跑步者目前(截至rc1)使用DNX项目,因为R#在不存在的位置查找已编译的测试程序集。尝试禁用resharper xUnit runner扩展并从默认的Visual Studio Test Explorer运行测试。它应该工作。

然后,当您需要运行测试时,请不要使用任何R#按钮或快捷方式。使用内置VS测试按钮&而是命令(或者只是从命令行运行dnx test,这应该更快)。一旦弄明白,就可以为其他非DNX项目重新启用R#xunit runner。