vs2015调试选定的测试从未起作用,断点上没有超级

时间:2016-02-15 18:32:08

标签: c# asp.net .net unit-testing visual-studio-2015

C#

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");
        }
}

`

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

目标:.net 4.5

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

在IISExpress中设置2个绑定" localhost:29633"和一个IP" 192.168.0.2:29633"允许跨网络测试和使用。这一切都很好。这是在.vs \ config \ applicationhost.config中设置的,具有2个eninres bindingInformation =":29633:*"和bindingInformation =":29633:192.168.0.2"

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

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

我尝试过的事情:

  • 重置所有设置
  • 确保两个项目(MyTestProject和MyWebProject都是针对Debug构建类型进行重建和设置)
  • 确保在该项目上启用ASP.NET调试。
  • 修改测试菜单 - >测试设置 - >默认流程架构,从32位到64位。
  • 修改测试菜单 - >测试设置 - >保持测试执行正常运行
  • 调试符号的设置,禁用“仅我的代码”,
  • 公共属性的设置 - >启动项目 - >多个启动项目
  • 试过这个(但我的项目中的所有代码都已重建,我不需要调试任何DLL):使用托管兼容模式
  • 我尝试过很多其他事情,现在我已经忘记了。有"重置所有设置"因为

如果我尝试附加到进程(在测试之间在后台运行的现有IISExpress.exe),那么我根本无法启动我的测试,选项"运行/调试所有测试"灰了。 如果我尝试启动任何其他应用程序,比如自己运行ASP.NET webapp,我再次无法启动测试,选项显示为灰色。 所以它必须从"测试[菜单] - >开始工作。调试 - >所有测试"并让VS2015根据需要启动所有进程,并附带调试器(理想情况下是IISExpress.exe和TE.processhost.managed.exe)。

我觉得痛苦的是,如果在设置过程中出现问题,为什么单元测试失败的原因是VS2015无法附加到进程,然后确认正确的进程设置,因此它正在执行预期的副本项目等等。它应该始终在启动时暂停执行以允许VS设置并与作为调试器的劣质进程通信,然后执行恢复。它应该只是单元测试运行失败,如果没有按预期设置环境,甚至不开始测试。

我注意到看起来像2 te.processhost.managed.exe(一个在测试中持久存在,一个在当前测试运行期间产生)。断点对话框指示此进程是测试用例断点的位置(但不是ASP.NET断点)

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

调试器附加到两个好吗?我应该如何看待这种情况呢?如何在终止时停止调试器清理,因为这会将UI重置为Debug中的许多选项 - >窗口 - > ...不可用(如果你不够快)。

如果我在代码中设置一个ASP.NET断点,例如在Global.asax / aspx中的Application_BeginRequest()中,执行也不会在这里停止。

我正在使用一个工作项目ZIP文件和最简单的测试用例项目的设置,证明调试器是从VS连接的,所以我可以通过代码运行步骤。

0 个答案:

没有答案