Rub*_*ink 63 unit-testing testdriven.net xunit.net visual-studio-2012
我有一个xUnit.net测试如下:
static class MyTestClass
{
[Fact]
static void MyTestMethod()
{
}
}
Run Code Online (Sandbox Code Playgroud)
VS 2012的xUnit插件说:
没有测试发现.
TestDriven.net运行得很好,但提到了Ad hoc:
1次传递,0次失败,0次跳过(参见"任务列表"),耗时0.47秒(Ad hoc)
TeamCity的,xunit.gui.exe
并xunit.console.exe
和Visual Studio还无法找到TestMethod
(我已xunit.runner.visualstudio
安装,VS正在进行一些测试.)
是什么赋予了?
Rub*_*ink 95
TL; DR你的测试类必须是public
(但你的测试方法可以是private
和/或static
)
出于效率的原因,xUnit作者选择BindingFlags.NonPublic
在流道中搜索测试类时不使用(MSIL元数据表不会将private
(/ internal
)类索引到相同的程度,因此相对效率存在显着的性能差异,因此可以实现反思).
由于上述原因,你class
的private
意思是它不会被捡起来.
事实上,测试方法是private
和static
是好的-因为1.0设计的xUnit一直支持这两个方面.
请注意,Visual Studio xUnit Runner扩展,xunit.console.exe
(和GUI),xunit
MSBuild任务,Resharper和CodeRush都符合这一点(尽管可以说他们[特别是后两者]可以在测试类(即类)时做更多的标记[可能间接地]包含 - Fact
来自传播的annoations)是private
).
TestDriven.net运行测试的原因是TestDriven.net的作者已经付出了巨大努力使其成为Just Work.它在内部使用一个特殊的Test Runner包装器/垫片(称为Adhoc Runner)来运行测试.请注意,该方法实际上并非通过xUnit.net运行器运行,因此您在测试中放置的任何具有副作用的属性都不会被触发.
值得注意的是NUnit(我很确定MSTest)确实使用了私有反射[并因此在private
课堂上进行了测试],这可能就是为什么你以前从未担心它的重要性.
注意:由此启用的副作用/技巧是您可以将测试类private
作为Skip
在测试类[和任何嵌套类] 中ping所有测试的快速方法.(可悲的是,这个星球上的这种情况被无意中使用的数量远远超过了这个故意的情况!)
CJB*_*JBS 43
这个答案适用于VS 2013,但VS 2012的步骤基本相同.这适用于通过ReSharper的单元测试功能运行.
为Visual Studio 2013安装xUnit.net运行器(小心以管理员身份运行Visual Studio,或者以非管理员身份运行IDE时可能无法运行测试):
一个.在Visual Studio 2013中,转到"工具" - >"扩展和更新" - >"在线"
湾 搜索Visual Studio 2012和2013的xUnit.net运行器
C.然后下载(安装)它.如果从VS 2012升级到VS 2013,建议将其卸载,然后重新安装.
d.重新启动Visual Studio.
如果安装了ReSharper,请安装xUnit.net test runner插件:
一个.在Visual Studio 2013中,导航:Resharper - > Extension Manager.
湾 在左侧,选择在线.
C.搜索"xunit.net".选择"xUnit.net Test Support".单击安装.
d.重新启动Visual Studio 2013.
"清理"解决方案
一个.在IDE中,在"解决方案资源管理器"中,右键单击解决方案,然后选择"清除".
湾 重新编译.
C.现在,右键单击[Fact]
属性时,选择Resharper的"运行单元测试"(而不是默认的"运行测试")
使用XUnit运行故障排除:
如果使用XUnit运行[Fact]测试的问题仍然存在,则可能需要从以下任何/所有文件夹中手动删除xUnit包(查看xunit DLL的内容,然后删除xUnit文件夹,如果找到):
C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\
C:\Users\<username>\AppData\Local\Microsoft\VisualStudio\12.0\Extensions\
至于ReSharper,请尝试卸载并重新安装xunitcontrib库(xUnit.net Test Support).我注意到一次卸载时,一些错误信息闪过.我抓住了一个屏幕截图,它列出了:
C:\Users\<username>\AppData\Local\JetBrains\ReSharper\vAny\packages\xunitcontrib.1.3.0\ReSharper\v8.1\plugins\xunit.dll
拒绝访问该路径
.要解决此问题,请C:\Users\<username>\AppData\Local\JetBrains\ReSharper\vAny\packages\xunitcontrib.1.3.0\
从Visual Studio卸载后删除该目录,然后以非管理员身份运行Visual Studio,并通过ReSharper重新安装(Resharper - > Extension Manager)
Dan*_*man 18
来自http://xunit.github.io/docs/getting-started-desktop.html#run-tests-visualstudio:
如果您在发现或运行测试时遇到问题,则可能是Visual Studio中损坏的运行器缓存的受害者.要清除此缓存,请关闭所有Visual Studio实例,然后删除文件夹%TEMP%\ VisualStudioTestExplorerExtensions.还要确保您的项目仅链接到单个版本的Visual Studio runner NuGet包(xunit.runner.visualstudio).
Dha*_*777 13
我在VS2017 RC,.NET核心1.1项目中遇到了同样的问题.更新xunit.runner为我工作,
Install-Package xunit.runner.visualstudio
Run Code Online (Sandbox Code Playgroud)
小智 6
(正如@Kyle在另一个答案的评论中所提到的)No tests found to run
使用NuGet获取xUnit.dll并最终获得版本2.0.0(目前标记为预发行版,因为某些核心功能,如发现v1测试等尚未在该分支中实施).
这种情况下的解决方案是在NuGet包管理器中选择Stable Only版本(而不是Include Prerelease).
我在 .NET Core 上遇到这个问题已经有一段时间了,没有发现测试类或测试方法。以下修复对我有用:
运行以下命令构建项目:
dotnet build
Run Code Online (Sandbox Code Playgroud)注意:从 Visual Studio.NET 构建将不起作用!<<<<<<<<<<<重要!
归档时间: |
|
查看次数: |
57202 次 |
最近记录: |