I have not been able to debug or step through unit test.
Here is my sample test code...
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);
}
}
}
When using Microsoft.VisualStudio.TestTools.UnitTesting, go to 'Test' in the main menu of VS 2010, click submenu 'Debug' -> 'tests in current context'.
Right-clicking on the test-code and selecting 'run tests' will never start the debugger, not even when mode = debug.
It's far simpler in VS 2013, in Test Explorer select tests you wish to debug, right-click and choose debug selected tests.
Yes you can, thank you :)
To actually break on them you need to run your unit tests in Debug mode though.
If you were running nunit
, that was so easy:
- Run
nunit
and open your desired assembly in it.
- Open visual studio -> Debug -> Attach to Process...
- Select process of
nunit
- Put break point in each line you want.
- Go back to
nunit
and run tests
- You will see that execution stops at break points
Maybe simply debugging tests and setting breakpoints works in some kinds of Unit tests but it doesn't if you debug e.g. Web service.
To debug a Web Service (break inside a Unit test) you have to insert this code:
System.Diagnostics.Debugger.Break();
This will show a popup saying the application stopped working and you can choose to debug it.
More here:
http://msdn.microsoft.com/en-us/library/ms243172.aspx#DebuggingOnCassini
Another solution...
You need to run and attach the debugger
Set this line at the first line executed in your test (maybe in the test class constructor)
System.Diagnostics.Debugger.Launch();
then when debug window open , chose the visual stdio
One option is to install TestDriven.net which makes it easier to run unit tests on any of the major unit testing .net frameworks (nunit, xunit, VS tools, etc). Once installed you can right click on a function and choose Test With --> debugger.