单元测试中单步调试代码

时间:2010-11-05 05:03:49

标签: c# visual-studio unit-testing mstest

我无法调试或逐步完成单元测试。

以下是我的示例测试代码......

using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using DomainModel.Entities;
using DomainModel.Abstract;
using WebUI.Controllers;

namespace Tests
{
    [TestClass]
    public class PeopleControllerTests
    {

        static IPeopleRepository MockPeopleRepository(params Person[] people)
        {
            var mockPeopleRepos = new Moq.Mock<IPeopleRepository>();
            mockPeopleRepos.Setup(x => x.People).Returns(people.AsQueryable());
            return mockPeopleRepos.Object;
        }

        [TestMethod]

        public void Count_Of_People()
        {
            IPeopleRepository repository = MockPeopleRepository(
                new Person { Age = 31, Gender = "Male", Name = "Tom" },
                new Person { Age = 25, Gender = "Female", Name = "Sally" },
                new Person { Age = 18, Gender = "Female", Name = "John" }
                );

            PeopleController controller = new PeopleController(repository);
            var people = controller.List().ViewData.Model;
            var peoplelist = people as IList<Person>;
            Assert.AreEqual(3, peoplelist.Count);
        }

    }
}

8 个答案:

答案 0 :(得分:83)

使用Microsoft.VisualStudio.TestTools.UnitTesting时,转到VS 2010主菜单中的“Test”,单击子菜单“Debug” - &gt; “在当前背景下进行测试”。

右键单击测试代码并选择“运行测试”将永远不会启动调试器,即使在mode = debug时也是如此。

答案 1 :(得分:18)

在VS 2013中要简单得多,在Test Explorer中选择要调试的测试,右键单击并选择调试所选测试。

enter image description here

答案 2 :(得分:12)

是的,你可以,谢谢你:)

要实际打破它们,您需要在调试模式下运行单元测试。

答案 3 :(得分:4)

如果您正在运行nunit,那就太容易了:

  1. 运行nunit并在其中打开所需的程序集。
  2. 打开视觉工作室 - &gt;调试 - &gt;附加到流程......
  3. 选择nunit
  4. 的流程
  5. 在您想要的每一行中添加断点。
  6. 返回nunit并运行测试
  7. 您将看到执行在断点处停止

答案 4 :(得分:4)

也许只是调试测试和设置断点在某些单元测试中有效,但是如果你调试它就不行网络服务。

要调试Web服务(在单元测试中中断),您必须插入以下代码:

System.Diagnostics.Debugger.Break();

这将显示一个弹出窗口,说应用程序停止工作,您可以选择调试它。

更多信息: http://msdn.microsoft.com/en-us/library/ms243172.aspx#DebuggingOnCassini

答案 5 :(得分:4)

另一种解决方案......

您需要运行并附加调试器

将此行设置在测试中执行的第一行(可能在测试类构造函数中)

System.Diagnostics.Debugger.Launch();

然后当调试窗口打开时,选择visual stdio

答案 6 :(得分:0)

一个选项是安装TestDriven.net,这样可以更轻松地在任何主要的单元测试.net框架(nunit,xunit,VS工具等)上运行单元测试。安装完成后,您可以右键单击某个功能,然后选择Test With - &gt;调试器。

答案 7 :(得分:0)

在Visual Studio中调试单元测试的两个简单步骤 1.在单元测试中设置要调试的断点 2.右键单击单元测试中的任意位置,然后从上下文菜单中选择“调试测试”

单步执行单元测试与在Visual Studio中单步执行任何其他代码非常相似。 跨步-F10 进入-F11 走出= Shift + F11

您还可以从“测试资源管理器”窗口中调试单元测试 1.首先找到要调试的单元测试 2.双击单元测试将打开该单元测试 3.在单元测试中设置一个断点 4.在测试资源管理器中,右键单击该单元测试,然后选择“从上下文菜单中调试选定的测试”

调试所有测试 单击测试-调试-所有测试 然后执行将在所有单元测试中的所有断点处暂停

要记住的一件事是,如果在Visual Studio中选择运行测试而不是调试测试,则单元测试中的断点将被忽略。