2010-11-05 389 views
32

我还没有能够调试或单步测试单元测试。单元测试中的单步测试和调试代码

这里是我的样品测试代码...

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

    } 
} 
+3

你的意思是,除了点击该线的右侧,或者右键单击断点 - >插入断点? – 2010-11-05 05:28:19

回答

64

当使用Microsoft.VisualStudio.TestTools.UnitTesting,去“测试”在VS 2010的主菜单中,点击子菜单“调试” - >“在目前的情况下测试”。

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

+4

在VS2012中,我们可以通过在特定测试方法中放置一个断点来逐步进行调试。进入菜单>测试>调试>选定的测试或全部测试后。不,你应该能够调试。只是一个更新:) – RajeshKdev 2014-05-23 09:13:47

+2

除了@ RJK的评论,这也是步骤通过VS 2013测试(或使用Ctrl + T) – 2014-07-24 15:16:30

+0

^同样在VS 2015 – 2016-07-24 19:53:49

0

一种选择是安装TestDriven.net这使得它更容易地与任何主要的单元测试.NET框架运行单元测试(NUnit的,的xUnit,VS工具等)。安装完成后,您可以右键单击某个功能并选择Test With - > debugger。

10

当然可以,谢谢:)

要真正对他们,你需要尽管调试模式运行单元测试打破。

+5

菜单>测试>调试>当前上下文中的测试(VS 2010中的Ctrl + R,Ctrl + T) – Jonathan 2012-07-10 13:20:57

+0

此答案缺少足够的详细信息。你能提供具体的指示吗?这与其他答案不同吗? – DaveInCaz 2018-01-10 16:36:13

3

如果你正在运行nunit,那是那么容易:

  1. 运行nunit并在其中打开您所需的组件。
  2. 打开Visual Studio - >调试 - >附加到进程...
  3. 你想要的每一行nunit
  4. 认沽破发点的选择过程。
  5. 回到nunit和运行测试
  6. 你会看到,执行停止在断点
+1

谢谢! nunit-agent.exe给我。 – CaRDiaK 2015-03-03 13:51:13

3

也许简单地调试测试,并设置断点在某些类型的单元测试工作,但如果你调试它不例如网络服务。

要调试Web服务(一个单元测试内线突破),你必须插入此代码:

System.Diagnostics.Debugger.Break(); 

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

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

3

另一种解决方案...

你需要运行和调试器附加

在您的测试(也许在测试类的构造函数)执行的第一线

System.Diagnostics.Debugger.Launch(); 
设置这条线

然后当调试窗口打开,选择视觉stdio

+2

为什么你回答一个4岁的职位,答案与其他答案基本相同? – 2014-12-24 01:50:30

9

它在VS 2013中更简单,在测试资源管理器中选择要调试的测试,右键单击并选择de错误选择测试。

enter image description here