Прохождение и отладка кода в модульных тестах - PullRequest
46 голосов
/ 05 ноября 2010

Я не смог отладить или пройти через юнит-тест.

Вот мой пример тестового кода ...

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

    }
}

Ответы [ 7 ]

83 голосов
/ 16 апреля 2012

При использовании Microsoft.VisualStudio.TestTools.UnitTesting, перейдите в «Тест» в главном меню VS 2010, выберите подменю «Отладка» -> «Тесты в текущем контексте».

Щелкните правой кнопкой мыши натестовый код и выбор «выполнить тесты» никогда не запустят отладчик, даже когда mode = debug.

19 голосов
/ 04 июля 2016

В VS 2013 намного проще, в Test Explorer выберите тесты, которые вы хотите отладить, щелкните правой кнопкой мыши и выберите отладку выбранных тестов.

enter image description here

12 голосов
/ 05 ноября 2010

Да, вы можете, спасибо:)

Чтобы на самом деле сломать их, вам нужно запустить свои тесты в режиме отладки.

4 голосов
/ 24 декабря 2014

Другое решение ...

Вам нужно запустить и подключить отладчик

Установить эту строку в первой строке, выполненной в вашем тесте (возможно, в конструкторе класса теста)

System.Diagnostics.Debugger.Launch();

затем при открытии окна отладки выбрал визуальный stdio

4 голосов
/ 04 октября 2011

Может быть, просто отладка тестов и установка точек останова работает в некоторых видах модульных тестов, но это не так, если вы отлаживаете, например Веб-сервис.

Для отладки веб-службы (перерыв внутри модульного теста) вы должны вставить этот код:

System.Diagnostics.Debugger.Break();

Появится всплывающее окно с сообщением о том, что приложение перестало работать, и вы можете отладить его.

Подробнее здесь: http://msdn.microsoft.com/en-us/library/ms243172.aspx#DebuggingOnCassini

4 голосов
/ 06 ноября 2010

Если вы работали nunit, это было бы так просто:

  1. Запустите nunit и откройте в нем нужную сборку.
  2. Открыть Visual Studio -> Отладка -> Присоединить к процессу ...
  3. Процесс выбора nunit
  4. Поставьте точку останова в каждой нужной строке.
  5. Вернитесь к nunit и запустите тесты
  6. Вы увидите, что выполнение останавливается в точках останова
0 голосов
/ 05 ноября 2010

Один из вариантов - установить TestDriven.net , что упрощает запуск модульных тестов на любом из основных модулей модульного тестирования .net (nunit, xunit, инструменты VS и т. Д.) После установки вы можете щелкнуть правой кнопкой мыши по функции и выбрать Test With -> debugger.

...