C# vs2015调试所选测试从未工作过,断点上没有支持

C# vs2015调试所选测试从未工作过,断点上没有支持,c#,asp.net,.net,unit-testing,visual-studio-2015,C#,Asp.net,.net,Unit Testing,Visual Studio 2015,c# ` IDE:VS2015更新1(在Win10上),未安装额外的第三方插件 目标:.net 4.5 使用IISExpress作为非管理员用户进行测试(对于我来说,即使在64位系统上也是32位) 在iisex中设置两个绑定按“localhost:29633”和一个到IP“192.168.0.2:29633”以允许跨网络测试和使用。这一切都很好。这是在.vs\config\applicationhost.config中设置的,具有2个entires bindingInformation=“:29

c#

`

IDE:VS2015更新1(在Win10上),未安装额外的第三方插件

目标:.net 4.5

使用IISExpress作为非管理员用户进行测试(对于我来说,即使在64位系统上也是32位)

在iisex中设置两个绑定按“localhost:29633”和一个到IP“192.168.0.2:29633”以允许跨网络测试和使用。这一切都很好。这是在.vs\config\applicationhost.config中设置的,具有2个entires bindingInformation=“:29633:*”和bindingInformation=“:29633:192.168.0.2”

我可以让我的单元测试成功通过,但我无法让执行在设置的任何断点处停止,无论是在code Break()还是IDE断点窗口中。

因此,我提供了一个目标测试类来在IDE中工作,以证明它应该可以按原样为其他人工作。 您需要创建一个名为“MyWebProject”的虚拟/空ASP.NET项目,并在其自己的项目中使用此测试用例

我尝试过的事情:

  • 重置所有设置
  • 确保两个项目(MyTestProject和MyWebProject都是针对调试生成类型重新生成和设置的)
  • 确保在该项目上启用ASP.NET调试
  • 修改测试菜单->测试设置->默认流程架构,从32位修改为64位
  • 修改测试菜单->测试设置->保持测试执行运行
  • 调试符号的设置,仅禁用我的代码
  • 常用属性设置->启动项目->多个启动项目
  • 尝试过这个(但我在项目中的所有代码都已重建,我不需要调试任何DLL):使用托管兼容模式
  • 很多其他我现在已经忘记的事情。从那时起,“重置所有设置”
若我试图附加到进程(在测试之间在后台运行的现有IISExpress.exe),那个么我根本无法启动测试,选项“运行/调试所有测试”变灰。 如果我尝试启动任何其他应用程序,比如单独运行ASP.NET webapp,我同样无法启动测试,选项变灰。 因此,它必须从“Test[menu]->Debug->All Tests”开始工作,并让VS2015根据需要启动所有进程,并附加调试器(理想情况下连接到IISExpress.exe和TE.processhost.managed.exe)

我感到痛苦的是,如果在设置过程中出现问题,为什么单元测试没有失败,因为VS2015无法连接到流程,然后确认流程的正确设置,以便执行项目的预期副本,等等。。显然,它应该总是在开始时暂停执行,以允许VS设置并与作为调试器的低级进程通信,然后继续执行。它应该只是单元测试运行失败,甚至不启动测试,如果环境没有按照预期进行所有设置的话

我注意到2 te.processhost.managed.exe的样子(一个是跨测试持久的,另一个是在当前测试运行期间生成的)。“断点”对话框指示此进程是测试用例断点(但不是ASP.NET断点)的位置

当然,ASP.NET在iisexpress.exe中运行,这是另一个进程

那么,调试器是否同时连接到这两个节点?我怎么能在这种情况下看到这一点?如何停止调试器在终止时清理,因为这会将UI重置为调试->窗口->中的许多选项。。。不可用(如果您不够快)

如果我在代码中设置ASP.NET断点,例如在Global.asax/aspx中的应用程序_BeginRequest()中,执行也不会在这里停止


我正在寻找一个工作项目ZIP文件和最简单测试用例项目的设置,以证明调试器是从VS附加的,因此我可以在代码中运行步骤。

如果您还没有尝试过,可以在VS2013社区版,甚至VS2017社区版中尝试(您可以同时安装多个VS2017,甚至是同一版本,因此您可以轻松尝试VS2017的多种配置)和/或在虚拟机上进行尝试(免费试用虚拟机可从Microsoft、Digital Ocean(我认为)和其他可能提供)。如果您尚未尝试,您可以在VS2013社区版,甚至VS2017社区版中进行尝试(您可以同时安装多个VS2017,甚至是同一版本,因此您可以轻松尝试VS2017的多种配置)和/或在虚拟机上尝试(免费试用虚拟机可从Microsoft、Digital Ocean(我想)和其他公司获得)。
namespace MyTestProject
{
    [TestClass]
    public class MyTesterClass
    {
        [TestMethod]
        [HostType("ASP.NET")]
        [AspNetDevelopmentServerHost("$(SolutionDir)\\MyWebProject", "/MyWebProject")]
        [UrlToTest("http://localhost:29633/")]  // FIXUP for your port
        public void MyTestMethod()
        {    
            Console.Out.WriteLine("BEFORE");
            Assert.IsTrue(System.Diagnostics.Debugger.IsAttached);  // always fails
            System.Diagnostics.Debugger.Break();
            Console.Out.WriteLine("AFTER");
        }
}