2010-11-05 234 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