Подтвердить что ты не робот

Выполнение и отладка кода в модульных тестах

Мне не удалось отладить или перейти на 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);
        }

    }
}
4b9b3361

Ответ 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.