xUnit.net v2 在 Visual Studio 2015 年未发现 .NET Core 测试
xUnit.net v2 not discovering .NET Core Tests in Visual Studio 2015
我对这个问题真的很沮丧。我已经尝试更改版本号,但测试资源管理器中没有显示任何测试。
在测试输出中window我可以看到这个输出
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) ==========
这太脆弱了,有时显示测试然后它们就永远消失了。重新启动 VS 没有帮助,重新安装 xunit/xunit runner 也没有帮助。
在另一个测试项目中,我得到了不同的输出,但仍然没有显示测试
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) ==========
这是我的一部分 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"
我通过确保所有解决方案项目中的所有包都引用相同的版本来设法让它工作。
这件事发生在我身上,因为我引用的是最新版本,正如您从 project.json 中看到的那样。
我做的另一件事是从不引用仅适合目的的单个包。例如,在我的商业项目中,我正在创建一个中间件并且我引用了 Microsoft.AspNet.Http 因为我不需要完整的 MVC 包。这在测试项目中引起了问题,所以我将 Microsoft.AspNet.MVC 添加到任何需要任何类型的 Http 交互的项目,即 httpcontext。
这可能不是理想的修复方法,但它确实对我有用。我希望这可以帮助遇到同样问题的其他人。
我遇到了一些问题,但可以正常使用!
"dependencies": {
"Test.ANNe.Compiler": "1.0.0-*",
"xunit.runner.dnx": "2.1.0-beta2-build79"
},
"commands": {
"Test.Console": "Test.Console",
"test": "xunit.runner.dnx"
},
我有 3 个问题。
1.你只能有1个跑步者!
2.命令测试
3.确保编译环境与dnvm中的环境设置相匹配
我注意到您使用的是 dnx-clr-win-x86.1.0.0,它是 dnx 而不是 dnx runner。
我刚刚在使用 TFS 时遇到了一些问题。设置它并使其在一台机器上运行,然后转到另一台机器上,在检查我的更改后获得最新代码,一切都正确显示,但测试运行器根本没有找到任何测试。最后,对测试项目进行简单的清理和重建修复了它,现在它找到了测试。
这是我的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 确实对他和其他人有用,而且它可能是一个损坏的包缓存。
以下依赖项(将在 project.json 中提供)对我有用 (original source):
"dependencies": {
"System.Collections": "4.0.10-beta-23019",
"System.Linq": "4.0.0-beta-23019",
"System.Threading": "4.0.10-beta-23019",
"System.Runtime": "4.0.10-beta-23019",
"Microsoft.CSharp": "4.0.0-beta-23019",
"xunit": "2.1.0-*",
"xunit.runner.dnx": "2.1.0-*",
"xunit.runner.visualstudio": "2.0.1",
"Microsoft.Framework.TestHost": "1.0.0-*",
"Microsoft.Framework.ApplicationHost": "1.0.0-*"
}
遇到了类似的问题,从 xunit 2.0.0-rc1 更改为 2.0.0-beta8 解决了这个问题。
详情:
- 项目 A(Microsoft.AspNet.Authentication.Test 的旧版本)有效
- 项目 B(我的自定义项目)没有工作
设置要使用的项目 B:
"xunit.runner.aspnet": "2.0.0-aspnet-beta8*"
而不是:
"xunit.runner.aspnet": "2.0.0-aspnet-*"
已解决问题。项目 B 正在接收:
xunit.runner.aspnet (2.0.0-aspnet-rc1-15669)
项目 A 使用了以下 project.json:
{
"compilationOptions": {
"warningsAsErrors": "true"
},
"dependencies": {
"Microsoft.AspNet.Authentication.Cookies": "1.0.0-*",
"Microsoft.AspNet.Authentication.Facebook": "1.0.0-*",
"Microsoft.AspNet.Authentication.Google": "1.0.0-*",
"Microsoft.AspNet.Authentication.MicrosoftAccount": "1.0.0-*",
"Microsoft.AspNet.Authentication.OAuthBearer": "1.0.0-*",
"Microsoft.AspNet.Authentication.OpenIdConnect": "1.0.0-*",
"Microsoft.AspNet.Authentication.Twitter": "1.0.0-*",
"Microsoft.AspNet.DataProtection": "1.0.0-*",
"Microsoft.AspNet.TestHost": "1.0.0-*",
"Moq": "4.2.1312.1622",
"xunit.runner.aspnet": "2.0.0-aspnet-*"
},
"commands": {
"test": "xunit.runner.aspnet"
},
"frameworks": {
"dnx451": {
"dependencies": {
"Shouldly": "1.1.1.1"
}
}
}
}
使用的项目 B:
{
"dependencies": {
"Microsoft.AspNet.Authentication": "1.0.0-*",
"Microsoft.AspNet.Authentication.OAuth": "1.0.0-*",
"Microsoft.AspNet.Authentication.Cookies": "1.0.0-*",
"Microsoft.Framework.DependencyInjection": "1.0.0-*",
"Microsoft.AspNet.TestHost": "1.0.0-*",
"Moq": "4.2.1312.1622",
"xunit.runner.aspnet": "2.0.0-aspnet-*"
},
"commands": {
"test": "xunit.runner.aspnet"
},
"frameworks": {
"dnx451": {
"dependencies": {
"Shouldly": "1.1.1.1"
}
}
}
}
我对这个问题真的很沮丧。我已经尝试更改版本号,但测试资源管理器中没有显示任何测试。
在测试输出中window我可以看到这个输出
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) ==========
这太脆弱了,有时显示测试然后它们就永远消失了。重新启动 VS 没有帮助,重新安装 xunit/xunit runner 也没有帮助。
在另一个测试项目中,我得到了不同的输出,但仍然没有显示测试
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) ==========
这是我的一部分 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"
我通过确保所有解决方案项目中的所有包都引用相同的版本来设法让它工作。
这件事发生在我身上,因为我引用的是最新版本,正如您从 project.json 中看到的那样。
我做的另一件事是从不引用仅适合目的的单个包。例如,在我的商业项目中,我正在创建一个中间件并且我引用了 Microsoft.AspNet.Http 因为我不需要完整的 MVC 包。这在测试项目中引起了问题,所以我将 Microsoft.AspNet.MVC 添加到任何需要任何类型的 Http 交互的项目,即 httpcontext。
这可能不是理想的修复方法,但它确实对我有用。我希望这可以帮助遇到同样问题的其他人。
我遇到了一些问题,但可以正常使用!
"dependencies": {
"Test.ANNe.Compiler": "1.0.0-*",
"xunit.runner.dnx": "2.1.0-beta2-build79"
},
"commands": {
"Test.Console": "Test.Console",
"test": "xunit.runner.dnx"
},
我有 3 个问题。 1.你只能有1个跑步者! 2.命令测试 3.确保编译环境与dnvm中的环境设置相匹配
我注意到您使用的是 dnx-clr-win-x86.1.0.0,它是 dnx 而不是 dnx runner。
我刚刚在使用 TFS 时遇到了一些问题。设置它并使其在一台机器上运行,然后转到另一台机器上,在检查我的更改后获得最新代码,一切都正确显示,但测试运行器根本没有找到任何测试。最后,对测试项目进行简单的清理和重建修复了它,现在它找到了测试。
这是我的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 确实对他和其他人有用,而且它可能是一个损坏的包缓存。
以下依赖项(将在 project.json 中提供)对我有用 (original source):
"dependencies": {
"System.Collections": "4.0.10-beta-23019",
"System.Linq": "4.0.0-beta-23019",
"System.Threading": "4.0.10-beta-23019",
"System.Runtime": "4.0.10-beta-23019",
"Microsoft.CSharp": "4.0.0-beta-23019",
"xunit": "2.1.0-*",
"xunit.runner.dnx": "2.1.0-*",
"xunit.runner.visualstudio": "2.0.1",
"Microsoft.Framework.TestHost": "1.0.0-*",
"Microsoft.Framework.ApplicationHost": "1.0.0-*"
}
遇到了类似的问题,从 xunit 2.0.0-rc1 更改为 2.0.0-beta8 解决了这个问题。
详情:
- 项目 A(Microsoft.AspNet.Authentication.Test 的旧版本)有效
- 项目 B(我的自定义项目)没有工作
设置要使用的项目 B:
"xunit.runner.aspnet": "2.0.0-aspnet-beta8*"
而不是:
"xunit.runner.aspnet": "2.0.0-aspnet-*"
已解决问题。项目 B 正在接收:
xunit.runner.aspnet (2.0.0-aspnet-rc1-15669)
项目 A 使用了以下 project.json:
{
"compilationOptions": {
"warningsAsErrors": "true"
},
"dependencies": {
"Microsoft.AspNet.Authentication.Cookies": "1.0.0-*",
"Microsoft.AspNet.Authentication.Facebook": "1.0.0-*",
"Microsoft.AspNet.Authentication.Google": "1.0.0-*",
"Microsoft.AspNet.Authentication.MicrosoftAccount": "1.0.0-*",
"Microsoft.AspNet.Authentication.OAuthBearer": "1.0.0-*",
"Microsoft.AspNet.Authentication.OpenIdConnect": "1.0.0-*",
"Microsoft.AspNet.Authentication.Twitter": "1.0.0-*",
"Microsoft.AspNet.DataProtection": "1.0.0-*",
"Microsoft.AspNet.TestHost": "1.0.0-*",
"Moq": "4.2.1312.1622",
"xunit.runner.aspnet": "2.0.0-aspnet-*"
},
"commands": {
"test": "xunit.runner.aspnet"
},
"frameworks": {
"dnx451": {
"dependencies": {
"Shouldly": "1.1.1.1"
}
}
}
}
使用的项目 B:
{
"dependencies": {
"Microsoft.AspNet.Authentication": "1.0.0-*",
"Microsoft.AspNet.Authentication.OAuth": "1.0.0-*",
"Microsoft.AspNet.Authentication.Cookies": "1.0.0-*",
"Microsoft.Framework.DependencyInjection": "1.0.0-*",
"Microsoft.AspNet.TestHost": "1.0.0-*",
"Moq": "4.2.1312.1622",
"xunit.runner.aspnet": "2.0.0-aspnet-*"
},
"commands": {
"test": "xunit.runner.aspnet"
},
"frameworks": {
"dnx451": {
"dependencies": {
"Shouldly": "1.1.1.1"
}
}
}
}