我有一个xUnit.net测试,如下所示:
static class MyTestClass
{
[Fact]
static void MyTestMethod()
{
}
}
VS 2012的xUnit插件说:
找不到要运行的测试。
TestDriven.net运行得很好,but mentions something about Ad hoc
1通过,0失败,0跳过(请参阅任务列表),耗时0.47秒(即席)
TeamCity、xunit.gui.exe
、xunit.console.exe
和Visual Studio也找不到TestMethod
(我已经安装了xunit.runner.visualstudio
,VS正在进行一些测试。)
怎么回事?
发布于 2013-04-25 20:24:28
您的测试类必须为public
(但您的测试方法可以是private
和/或static
)
出于效率的原因,xUnit作者选择在运行器中搜索测试类时不使用BindingFlags.NonPublic
(MSIL元数据表不会对private
(/internal
)类进行相同程度的索引,因此在反射可以实现的相对效率方面存在显著的性能差异)。
由于上面的原因,你的class
is class
is意味着它不会被提取。
测试方法是private
static
这一事实在设计上是很好的,因为1.0已经同时支持了这两个方面。
请注意,Visual Studio扩展、xunit.console.exe
(和图形用户界面)、xunit
MSBuild任务、Resharper和CodeRush在遵守这一点上都是一致的(尽管可以说,当测试类(即可能间接包含Fact
-derived注释的类)为private
时,它们可以做更多的标记,特别是后两者)。
TestDriven.net运行您的测试的原因是,TestDriven.net的作者已经投入了大量的精力来使其正常工作。它在内部使用一个特殊的test Runner包装器/填充程序(称为Adhoc Runner)来运行您的测试。请注意,该方法实际上不是通过xUnit.net运行器运行的,因此您放在测试上的任何有副作用的属性都不会被触发。
值得注意的是,NUnit (以及我非常确定的MSTest)确实使用了私有反射,因此会在private
类中选择测试,这可能就是为什么您以前不需要担心它的原因。
注意:由此带来的一个副作用/技巧是,您可以创建一个测试类private
,作为对测试类和任何嵌套类中的所有测试执行Skip
ping的一种快捷方式。(可悲的是,在这个星球上,无意中使用这种方法的案例远远超过了有意使用这种方法的案例!)
发布于 2014-01-10 07:15:18
这个答案是针对VS2013的,但对于VS2012,步骤基本上是相同的。这适用于通过ReSharper's unit test functionality运行。
a.在Visual Studio2013中,转至Tools -> Extensions and Updates -> Online
b.搜索Visual Studio2012和2013的xUnit.net runner
c.然后下载(安装)它。如果从VS2012升级到VS2013,建议先卸载,然后再重新安装。
d.重启Visual Studio.
(注意:从ReSharper 2016.1开始,xunit support is built in to ReSharper,这意味着不再需要xunit插件。)
a.在Visual Studio2013中,导航: Resharper ->扩展管理器。
b.在左侧,选择Online。
c.搜索“xunit.net”。选择“xUnit.net测试支持”。单击Install。
d.重启Visual Studio2013。
a.在IDE的“解决方案资源管理器”中,右击该解决方案,然后选择“清理”。
b.重新编译。
c.现在,当右键单击[Fact]
属性时,选择Resharper的“Run Unit Tests”(相对于默认的“Run Tests”)
使用XUnit运行疑难解答:
- `C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\`
- `C:\Users\<username>\AppData\Local\Microsoft\VisualStudio\12.0\Extensions\`
对于
- Access to the path `C:\Users\<username>\AppData\Local\JetBrains\ReSharper\vAny\packages\xunitcontrib.1.3.0\ReSharper\v8.1\plugins\xunit.dll` is denied.
- ... and the same for the other DLLs in that directory
要解决此问题,请在从Visual Studio卸载后删除C:\Users\<username>\AppData\Local\JetBrains\ReSharper\vAny\packages\xunitcontrib.1.3.0\
目录,然后以非管理员身份运行Visual Studio,并通过ReSharper (Resharper ->扩展管理器)重新安装
发布于 2016-10-19 16:09:51
来自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)的单个版本。
https://stackoverflow.com/questions/16214684
复制相似问题