Выполнение и отладка кода в модульных тестах
Мне не удалось отладить или перейти на unit test.
Вот мой примерный тестовый код...
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);
}
}
}
Ответы
Ответ 1
При использовании Microsoft.VisualStudio.TestTools.UnitTesting перейдите в "Тест" в главном меню VS 2010, нажмите подменю "Debug" → "тесты в текущем контексте".
Это единственный способ, который я нашел. Щелкните правой кнопкой мыши тестовый код, выбрав "run tests", никогда не запустите отладчик, даже если mode = debug.
Ответ 2
Да, вы можете, спасибо:)
Чтобы на самом деле сломать их, вам нужно запускать юнит-тесты в режиме отладки.
Ответ 3
В VS 2013 гораздо проще, в Test Explorer выберите тесты, которые вы хотите отладить, щелкните правой кнопкой мыши и выберите отлаживать выбранные тесты.
![введите описание изображения здесь]()
Ответ 4
Если вы выполняли nunit
, это было так просто:
- Запустите
nunit
и откройте в нем нужную сборку.
- Открыть визуальную студию → Отладка → Присоединить к процессу...
- Выберите процесс
nunit
- Поместите точку останова в каждую нужную строку.
- Вернитесь к
nunit
и запустите тесты
- Вы увидите, что выполнение останавливается в точках разрыва
Ответ 5
Может быть, просто отладка тестов и установка контрольных точек работают в некоторых типах модульных тестов, но это не так, если вы отлаживаете, например. Веб-сервис.
Чтобы отладить веб-службу (перерыв внутри Unit test), вы должны вставить этот код:
System.Diagnostics.Debugger.Break();
Это покажет всплывающее сообщение о том, что приложение перестало работать, и вы можете его отладить.
Подробнее здесь:
http://msdn.microsoft.com/en-us/library/ms243172.aspx#DebuggingOnCassini
Ответ 6
другое решение для этого старого сообщения
вам нужно запустить и прикрепить отладчик
установите эту строку в первой строке, выполненной в вашем тесте (возможно, в конструкторе тестового класса)
System.Diagnostics.Debugger.Launch();
затем, когда откроется окно отладки, выберите визуальный stdio
что все
Ответ 7
Один из вариантов заключается в установке TestDriven.net, что упрощает запуск модульных тестов на любом из основных модулей тестирования .net framework (nunit, xunit, VS инструменты и т.д.). После установки вы можете щелкнуть правой кнопкой мыши по функции и выбрать Test With → debugger.