当我打开Visual Studio 2013并加载我的解决方案时,我会收到一条错误消息,告诉我测试窗口无法加载.
The composition produced a single composition error. The root cause is provided below. Review the CompositionException.Errors property for more detailed information.
1) Cannot compose part 'Microsoft.VisualStudio.TestWindow.Controller.TestsServiceInternal' because a cycle exists in the dependencies between the exports being composed. To break this cycle, consider changing some imports from constructor to property injection.
Element: Microsoft.VisualStudio.TestWindow.Controller.TestsServiceInternal --> Microsoft.VisualStudio.TestWindow.Controller.TestsServiceInternal
Resulting in: Cannot get export 'Microsoft.VisualStudio.TestWindow.Controller.TestsServiceInternal (ContractName="Microsoft.VisualStudio.TestWindow.Data.TestsService+ITestsServiceInternal")' from part 'Microsoft.VisualStudio.TestWindow.Controller.TestsServiceInternal'.
Element: Microsoft.VisualStudio.TestWindow.Controller.TestsServiceInternal (ContractName="Microsoft.VisualStudio.TestWindow.Data.TestsService+ITestsServiceInternal") --> Microsoft.VisualStudio.TestWindow.Controller.TestsServiceInternal
The composition produced a single composition error. …Run Code Online (Sandbox Code Playgroud) unit-testing mstest visual-studio-test-runner visual-studio-2013
我正在使用Visual Studio Test for C++,我正在调试一个特定的测试.Microsoft提供了各种方法来在调试器中运行测试,但没有我真正喜欢的方法.我厌倦了必须找到测试代码,然后按Ctrl+ R,Ctrl+ T(或我讨厌的鼠标).我想要来自任何源代码上下文的Ctrl+ R,Ctrl+ T行为.
有没有办法挂钩F5在调试器中运行选定的测试?
我已经尝试将我的测试项目设置为启动,但这使得F5"无法启动",因为测试是一个DLL.
我正在使用自定义runsettings文件来控制检查代码覆盖率的项目.我使用了Microsoft提供的默认模板,并且到目前为止能够排除我想要的项目而没有任何问题.我的下一步操作是从代码覆盖中排除在添加服务引用时由Visual Studio创建的自动生成的Web代理类.
这似乎适用于默认的runsettings模板,因为它有一个如下所示的部分:
<Attributes>
<Exclude>
<!-- Don’t forget "Attribute" at the end of the name -->
<Attribute>^System.Diagnostics.DebuggerHiddenAttribute$</Attribute>
<Attribute>^System.Diagnostics.DebuggerNonUserCodeAttribute$</Attribute>
<Attribute>^System.Runtime.CompilerServices.CompilerGeneratedAttribute$</Attribute>
<Attribute>^System.CodeDom.Compiler.GeneratedCodeAttribute$</Attribute>
<Attribute>^System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute$</Attribute>
</Exclude>
</Attributes>
Run Code Online (Sandbox Code Playgroud)
添加服务引用时创建的所有类都使用GeneratedCodeAttribute进行修饰,因此应排除它们.但是,当我运行代码覆盖时,它们不会被忽略,因此代码覆盖率会报告大量未覆盖的代码.我已经多次尝试使用正则表达式,试图让它正确地选择属性而无济于事.
我很感激有关如何使用的建议: - 让这个属性排除工作 - 一个不需要我排除整个项目或使runsettings文件非泛型的替代方法(我们想重新使用这个基本文件在没有特定编辑的所有项目中)
仅供参考 - 虽然我了解其他代码覆盖工具,但我的目标是使Visual Studio工作,因此在这种情况下,关于切换到其他工具的建议对我没有帮助.
unit-testing mstest code-coverage visual-studio-2012 visual-studio-test-runner
在我的测试完成后,我总是得到以下异常,并且测试运行器正在关闭.这是正常的吗?当我得到一堆随机异常时,我总是感到很担心..
线程''(0xc04)已退出代码0(0x0).
System.ServiceModel.dll中发生'System.ComponentModel.Win32Exception'类型的第一次机会异常
mscorlib.dll中出现'System.Threading.ThreadAbortException'类型的第一次机会异常
System.Transactions Critical:0:http://msdn.microsoft.com/TraceCodes/System/ActivityTracing/2004/07/Reliability/Exception/Unhandled Unhandled exceptionvstest.executionengine.exeSystem.AppDomainUnloadedException,mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089尝试访问已卸载的AppDomain.System.AppDomainUnloadedException:尝试访问已卸载的AppDomain.
线程''(0xdd8)已经退出代码0(0x0).
'vstest.executionengine.exe'(Managed(v4.0.30319)):已加载'C:\ PROGRAM FILES(X86)\ MICROSOFT VISUAL STUDIO 11.0\COMMON7\IDE\COMMONEXTENSIONS\MICROSOFT\TESTWINDOW\Extensions\CppUnitFramework\Microsoft.VisualStudio. TestTools.CppUnitTestFramework.TestEngine.dll''vstest.executionengine.exe'(托管(v4.0.30319)):已加载'C:\ PROGRAM FILES(X86)\ MICROSOFT VISUAL STUDIO 11.0\COMMON7\IDE\COMMONEXTENSIONS\MICROSOFT\TESTWINDOW \扩展\ CppUnitFramework\Microsoft.VisualStudio.TestTools.CppUnitTestFramework.Discoverer.dll"
线程''(0xa64)已退出,代码为0(0x0).
Microsoft.VisualStudio.TestPlatform.TestExecutor.Core.dll中出现"System.InvalidOperationException"类型的第一次机会异常
System.ServiceModel.dll中发生了'System.ServiceModel.CommunicationObjectAbortedException'类型的第一次机会异常
等等
我有一个相当小的C#解决方案,里面有大约5个项目.我正在使用Visual Studio 2012和Update 4,以及Resharper 8.1(build 8.1.23.546).这是一款带有SSD和16GB RAM的I7,拥有大量磁盘空间.这台机器的性能非常出色.
我已经将R#设置为我的单元测试运行器,并且我注意到,只要我运行任何单元测试(一个或多个,通过或失败,没有区别),Visual Studio文本编辑器几乎无法使用.键入编辑器窗口会遭受如此极端的延迟(击键之间最多1秒),这会完全打破开发流程.有时候我实际上不得不停止打字让键盘赶上来让我可以在Intellisense中查找一些内容.
问题一直存在,直到我关闭然后重新打开VS,此时一切都很好.直到我再次进行单元测试.然后又回来了.
我运行进程监视器,看看是否有任何东西(它没有),我已经尝试了各种各样的东西,如清理各种缓存,临时asp.net文件,重置设置,一切都没有效果,实际上基本上几乎所有在Google搜索结果中显示的选项都非常慢
然而,消除过程确实最终缩小了一切与Resharper,特别是测试运行员的问题.
然后我尝试了R#性能优化技巧,如此处所述- 加速Resharper的终极指南,唯一有效的(多次重启后)是禁用单元测试运行器.
我已经禁用了R#测试运行器,并恢复到内置的VS(我讨厌),问题立即消失了.一旦我重新启用R#测试运行器,问题就会出现.
有没有其他人遇到过这个问题,并找到了解决方案?
干杯:)
resharper vs-unit-testing-framework visual-studio-2012 visual-studio-test-runner resharper-8.1
我在寻找如何使用 XUnit 在 MS Test Runner(与 Resharper 测试运行器中相同)中根据类层次结构显示测试时遇到问题。
我的结构类似于下面的示例:
public class ManagerTests
{
public class Create
{
public class When_Something
{
[Fact]
public void Then_this_should_happen()
{
}
}
public class When_Something_else
{
[Fact]
public void Then_else_should_happen()
{
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我希望它显示为(在测试运行程序中):
ManagerTests
Create
When_something
Then_this_should_happen
When_something_else
Then_else_should_happen
Run Code Online (Sandbox Code Playgroud)
但我似乎最终得到的是:
ManagerTests+Create+When_something
Then_this_should_happen
ManagerTests+Create+When_something_else
Then_else_should_happen
Run Code Online (Sandbox Code Playgroud)
我查看了xunit 配置设置,但似乎没有找到任何调整此设置的方法。我尝试了不同的分组选项,但没有找到任何解决此问题的方法。发现一些较旧的帖子询问有关此问题的问题(如本帖子),但到目前为止我还没有找到如何做到这一点。
所以问题是:我怎样才能停止嵌套的类名串联(class1+class2+class3)并呈现它们的层次结构?
我有一些带有测试库的旧项目。项目(和单元测试)的目标是.NET 3.5。我们正在使用VS 2017企业版。
我能够找到一些nuGet软件包,这些软件包可以正确构建测试,但是Test Explorer根本看不到测试。我认为这是因为没有测试适配器。
我使用的软件包是:
由于缺少.Net 3.5支持,我发现大多数软件包无法安装。在2017年这是有道理的,但仍然如此。
有谁知道我可以使用什么测试适配器使VS 2017 Test Explorer看到旧的.Net 3.5单元测试?
我不能做的事情:
感谢任何提示!
每个包含测试的类是否都在它自己的线程中运行?或者每个单独的测试都在它自己的线程中运行?如果每个包含测试的类都有自己的线程,它们是否同时运行?即,来自A类的测试是否会与B类测试同时进行?或者是A类的测试运行(每个都在自己的线程上),然后是B类的测试(每个都在自己的线程上)?
我正在尝试在我的构建服务器上运行以下命令,
c:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe"
"C:\UnitTest\MyTests.dll"
/settings:"C:\UnitTest\output.runsettings"
/UseVsixExtensions:"true"
/InIsolation
/Logger:"trx"
<?xml version="1.0" encoding="UTF-8"?>
<RunSettings>
<RunConfiguration>
<ResultsDirectory>.\TestResults</ResultsDirectory>
</RunConfiguration>
</RunSettings>
Run Code Online (Sandbox Code Playgroud)
它生成TestResults文件夹,该文件夹为空但没有任何TRX文件。
更新:从命令行收到以下警告。但是,当我在本地计算机中运行命令时,看不到这一点。我的测试项目中是否缺少某些内容?
警告:C:\UnitTest\MyTests.dll 中没有可用的测试。确保已安装的测试发现器和执行器、平台和框架版本设置合适,然后重试。**
我喜欢测试运行者运行单一测试方法的便利性。有没有办法在不进行测试的情况下运行任何方法?
原因是我厌倦了编写带有 CLI 菜单的控制台应用程序或带有每个方法一个按钮的 Windows 窗体,只是为了运行不需要在 UI 中实现的各种实用程序代码。参数化的控制台应用程序也太费力了。
我有多种方法。他们不互相依赖。每个任务都完成我作为开发人员运行的任务。
理想情况下,我希望有一个 Visual Studio .csproj 文件,其中包含可单独运行的方法的类,测试框架不会拾取这些方法,但我可以选择从测试运行程序等工具运行。
最近我开始了解基于nuget的适配器/转轮(http://xunit.github.io/docs/running-tests-in-vs.html)
我试图了解Visual Studio如何识别这些运行程序/适配器,然后由TestWindow使用.
例如,如果我安装"xunit.runner.visualstudio"nuget包,我的项目中的所有基于xUnit的测试都会被发现并显示在测试窗口中.
我试图了解VS如何使用packages文件夹中安装的软件包挂钩Test Discovery?
VS和基于nuget的适配器在哪里/如何被连接?
我试图找到这些信息,但我的谷歌fu失败了我.:(
我检查了问题的答案(通过NuGet安装的自定义测试适配器没有发现测试),它确实说VS将软件包复制到路径%TEMP%\ VisualStudioTestExplorerExtensions,但这就是它.