xUnit.net v2未在Visual Studio 2015中发现.NET核心测试

Sul*_*Aga 14 xunit visual-studio-2015 .net-core dnx xunit2

我真的很沮丧这个问题.我已经尝试更改版本号,但测试资源管理器中没有显示任何测试.

在测试输出窗口中,我可以看到此输出

Starting Microsoft.Framework.TestHost [C:\Users\sul\.dnx\runtimes\dnx-clr-win-x86.1.0.0-beta4\bin\dnx.exe --appbase "path to test project" Microsoft.Framework.ApplicationHost --port 63938 Microsoft.Framework.TestHost --port 63954 list ]
Unable to start Microsoft.Framework.TestHost
========== Discover test finished: 0 found (0:00:36.5471185) ==========
Run Code Online (Sandbox Code Playgroud)

这是如此脆弱,有时测试显示然后他们消失了.重启VS没有帮助,重新安装xunit/xunit运行器也没有帮助.

在另一个测试项目中,我得到了不同的输出,但仍未显示测试

Starting Microsoft.Framework.TestHost [C:\Users\sul\.dnx\runtimes\dnx-clr-win-x86.1.0.0-beta4\bin\dnx.exe --appbase "path to project" Microsoft.Framework.ApplicationHost --port 63938 Microsoft.Framework.TestHost --port 64421 list ]
Connected to Microsoft.Framework.TestHost
Discovering tests in 'path to project\project.json'
========== Discover test finished: 0 found (0:00:35.9341416) ==========
Run Code Online (Sandbox Code Playgroud)

这是我的project.json的一部分

"commands": {
    "test": "xunit.runner.dnx"
  },
  "dependencies": {
    "Microsoft.AspNet.Http": "1.0.0-*",    
    "Microsoft.AspNet.Http.Core": "1.0.0-*",
    "Microsoft.AspNet.TestHost": "1.0.0-*",    
    "Moq": "4.2.1502.911",    
    "xunit": "2.0.0",
    "xunit.runners": "2.0.0"
Run Code Online (Sandbox Code Playgroud)

Ben*_*enM 5

我在使用TFS时遇到了一些问题.设置它,让它在一台机器上工作,进入另一台机器,在检查我的更改后获得最新代码,一切都正确显示,但测试运行器根本没有找到任何测试.最后,Test项目上的一个简单的清理和重建修复了它,现在它找到了测试.

这是我的project.json

"dependencies": { "Xunit": "2.1.0-beta2-*", "Xunit.runner.dnx": "2.1.0-beta2-*" }, "commands": { "test": "xunit.runner.dnx" },

请注意依赖项中列出的Xunit中的大写字母X. 官方文档列表是小写x,但这不起作用.我已通过电子邮件通知回购所有者让他意识到这一点.

编辑:我已经与XUnit的作者交谈,他向我保证小写x对他和其他人有用,并且它可能是一个损坏的包缓存.


Sul*_*Aga 1

我设法通过确保所有解决方案项目中的所有包都引用相同的版本来使其正常工作。

这发生在我身上,因为我引用的是最新版本,正如您从 project.json 中看到的那样。

我做的另一件事是从不引用仅适合目的的单个包。例如,在我的业务项目中,我正在创建一个中间件,并且引用了 Microsoft.AspNet.Http,因为我不需要完整的 MVC 包。这导致测试项目出现问题,因此我将 Microsoft.AspNet.MVC 添加到任何需要任何类型 Http 交互(即 httpcontext)的项目中。

这可能不是理想的解决方案,但它确实对我有用。我希望这可以帮助其他遇到同样问题的人。