Fre*_*ver 158 unit-testing xunit test-runner visual-studio-2015 visual-studio-2017
编辑2016-10-19:
最初的问题是关于VS2015 CTP6与XUnit测试运行器特有的问题.从答案中可以清楚地看出,Visual Studio中的单元测试发现存在更广泛的问题,这可能在许多不同的情况下发生.我已经清理了我的问题以反映这一点.
我还在我自己的答案中加入了一个脚本,我今天仍然使用它来解决类似的问题.
许多其他答案也证明有助于更好地理解VS测试运行器的复杂性.我感谢人们仍在分享他们的解决方案!
原始问题2015-04-10:
从昨天开始,我的Visual Studio Test Explorer将不会发现任何项目的测试.建筑后也没有显示绿色装载栏.
当我转到Visual Studio Test Explorer并单击"全部运行",或者当我右键单击任何测试方法并选择"运行测试"时,我在输出窗口中得到以下内容:
Could not load file or assembly 'Microsoft.VisualStudio.Web.ProjectSystem, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.
我在Windows 10 Pro Technical Preview上运行Visual Studio 2015 CTP 6,构建10041. .NET Framework版本似乎并不重要 - 它发生在4.0,4.5.2和4.6.
我尝试使用以下测试框架,所有这些都给出了相同的行为:
Microsoft.VisualStudio.QualityTools.UnitTestFramework v14.0.22609.0xunit v2.1.0-beta1-build2945 同 xunit.runner.visualstudio v2.1.0-beta1-build1051NUnit v2.6.4 同 NUnitTestAdapter v2.0.0我在GitHub(xunit)上发现了一个类似的问题:无法通过xunit团队的评论发现测试#295:
请注意,据报道,Visual Studio 2015 CTP 5被一般的单元测试(不仅仅是xUnit.net)打破了,所以不要指望它可以工作.
此外,请确保您已清理Visual Studio的运行缓存.如果它被破坏,Visual Studio将永久行为不端,直到它被删除.要清除缓存,请关闭所有Visual Studio实例,然后删除文件夹%TEMP%\ VisualStudioTestExplorerExtensions(老实说,删除%TEMP%中可以删除的所有内容可能不会有什么坏处).
我尝试了他们的建议删除文件夹%TEMP%\VisualStudioTestExplorerExtensions.不幸的是,这并没有解决问题.
我注意到,实际上ReSharper的是能够发现一些测试.它仅适用于VS和NUnit测试,不适用于xunit.
我需要清除一些临时文件或缓存文件夹,但我知道Visual Studio中有很多文件夹并且并非所有这些文件夹都可以删除而没有不必要的副作用.
Rob*_*obM 150
令我惊讶的是,清除位于%TEMP%目录中的临时文件解决了我的问题.
注意:此路径通常为 C:\Users\(yourusername)\AppData\Local\Temp
如包含@ Warren-P,您可以通过放入" %temp%开始"菜单导航到临时文件夹,或启动"文件资源管理器"并输入%temp%地址栏.
小智 89
可能是您的代码是使用x64编译的,因此必须将默认处理器体系结构启用为X64.
Test > Test Settings > Default Processor Architecture > X64
Mic*_*ack 66
如果在VisualStudio中安装了NUnit Test Adapter 2/3,请查看.
(Tools>Extensions and Updates )
确保选择正确的处理器架构:
(Test>Test Settings>Default Processor Architecture)
Fre*_*ver 30
这个问题仍然时不时地回归.我写了一个小的PowerShell片段来自动清除相关的缓存/临时文件夹/文件.我在这里为未来的读者分享:
@(
"$env:TEMP"
"$env:LOCALAPPDATA\Microsoft\UnitTest"
"$env:LOCALAPPDATA\Microsoft\VisualStudio\14.0\1033\SpecificFolderCache.xml"
"$env:LOCALAPPDATA\Microsoft\VisualStudio\14.0\1033\ProjectTemplateMRU.xml"
"$env:LOCALAPPDATA\Microsoft\VisualStudio\14.0\ComponentModelCache"
"$env:LOCALAPPDATA\Microsoft\VisualStudio\14.0\Designer\ShadowCache"
"$env:LOCALAPPDATA\Microsoft\VisualStudio\14.0\ImageLibrary\cache"
"$env:LOCALAPPDATA\Microsoft\VisualStudio Services\6.0\Cache"
"$env:LOCALAPPDATA\Microsoft\WebsiteCache"
"$env:LOCALAPPDATA\NuGet\Cache"
) |% { Remove-Item -Path $_ -Recurse -Force }
确保事先关闭Visual Studio,之后重启可能是个好主意.
删除TEMP文件夹可能没有必要,在某些情况下甚至可能不合需要,因此我建议您先尝试不清除TEMP文件夹.只是省略了"$env:TEMP".
在彻底清除与Visual Studio相关的临时/缓存文件夹后,问题已"解决".
由于我没有时间逐个浏览所有内容然后在中间进行测试,遗憾的是我不知道哪个实际上导致了问题.
这些是我采取的确切步骤:
temp文件/文件夹手动清除/删除以下文件/文件夹:
%USERPROFILE%\AppData\Local\assembly%USERPROFILE%\AppData\Local\Microsoft\UnitTest%USERPROFILE%\AppData\Local\Microsoft\VisualStudio\14.0\1033\SpecificFolderCache.xml%USERPROFILE%\AppData\Local\Microsoft\VisualStudio\14.0\1033\ProjectTemplateMRU.xml%USERPROFILE%\AppData\Local\Microsoft\VisualStudio\14.0\ComponentModelCache%USERPROFILE%\AppData\Local\Microsoft\VisualStudio\14.0\Designer\ShadowCache%USERPROFILE%\AppData\Local\Microsoft\VisualStudio\14.0\ImageLibrary\cache%USERPROFILE%\AppData\Local\Microsoft\VisualStudio Services\6.0\Cache%USERPROFILE%\AppData\Local\Microsoft\WebsiteCache%USERPROFILE%\AppData\Local\NuGet\Cache%USERPROFILE%\AppData\Local\Temp小智 13
在Visual Studio 2015(Update 3)中,如果要在测试资源管理器中附加测试,则必须安装NUnit测试适配器.从Tools-> Extension And Updates-> Online选项卡下载适配器(您必须搜索适配器) ) - >下载.通过重新启动Visual Studio,您可以看到测试框架的更改.
我对此没有完整的答案,但我通过玩测试项目确定了一些事情:
xunit.runner.aspnet : 2.0.0-aspnet-beta4这似乎是官方BETA4 aspnet5发行版的一部分并不在Visual Studio中工作."xunit": "2.1.0-*"和"xunit-runner.dnx": "2.1.0-*"包DO在Visual Studio中工作.根据VS 2015 CTP 6,这是最新的,使用beta4版本,而不是日报.
我有一个实例,其中一些测试不会被选中,因为我已经使它们async像下面这样:
public async void This_IsMy_UnitTest()
问题是我忘了让他们返回a Task而不是void当我进行切换时.有人会认为这会导致错误或测试失败,但不会.该类中的单元测试完全被忽略,并且表现得像它们不存在一样.
它不是在大约3次清理和构建+重新启动后VS.NET,我看到测试运行并失败,表明我忘了添加Task返回类型:
public async Task This_IsMy_UnitTest()
更新后,发现单元测试并正常工作.这可能是一个边缘情况,但是async使用await内部但没有签名正确的测试可能会导致同样的问题,这不是我第一次这样做.
小智 6
我有相同的内容,但我的机器上不存在文件夹"%TEMP%\ VisualStudioTestExplorerExtensions",因此当我阅读帖子时,我有想法创建它并且它有效.测试资源管理器现在能够显示我的所有测试.谢谢.
在我的情况下(Visual Studio Enterprise 2015 14.0.25425.01 Update 3,Resharper 2016.2)我只需要从 Build 菜单中做一个干净的解决方案。重建解决方案然后使测试资源管理器“唤醒”并再次找到所有测试。
我的解决方案就是将NUnit 3 Test Adapter扩展安装到我的Visual Studio 2015中.
| 归档时间: | 
 | 
| 查看次数: | 111021 次 | 
| 最近记录: |