Модульное тестирование в Visual C # 2010 Express? - PullRequest
45 голосов
/ 06 августа 2010

Есть ли в Visual C # 2010 Express функция модульного тестирования?

Ответы [ 9 ]

38 голосов
/ 06 августа 2010

Как уже говорилось, версии Express не имеют встроенных функций и не допускают надстройки для этой функции, но вы можете использовать внешний инструмент, например, NUnit . * 1003.*

Вы также можете настроить команду для запуска из меню «Инструменты-> Внешние инструменты» из Visual Studio Express и запустить тестировщик из нее, если хотите.

Здесь - это ссылка, показывающая, как это сделать с VS C # 2008 Express, (прокрутите вниз до конца), но я думаю, что это также относится и к 2010 году.

Вот новая рабочая ссылка.

10 голосов
/ 06 августа 2010

Ничего встроенного, но вы всегда можете использовать nUnit с ним.

MSTest поставляется в комплекте с версией Pro и выше.

9 голосов
/ 03 апреля 2011

В 2010 году возможно использование внешнего приложения, однако отладка юнит-тестов становится сложной.Если вы хотите, чтобы отладка с использованием NUnit была, вероятно, лучшим маршрутом (но не единственным вариантом, см. ExpressUnit ).См. этот ответ в другой теме SO.Он ссылается на блог , в котором упоминается о запуске тестового проекта в качестве консольного приложения и непосредственном вызове библиотеки nunit для запуска тестов:

using System;

namespace RunTests
{
    static class Program
    {
        [STAThread]
        static void Main()
        {
            var args = new string[] { Assembly.GetExecutingAssembly().Location, "/run" };
            NUnit.Gui.AppEntry.Main(args);
        }
    }
}
8 голосов
/ 06 августа 2010

В выпусках Visual Studio Express есть ограничение, что плагины / надстройки категорически запрещены.Они не поставляются со встроенным решением для тестирования, и вы не можете добавить его.

Ваш лучший / единственный вариант - использовать автономный тестовый прогон, такой как nUnit, mspec и т. Д ... изапустить его извне из ВСЕ.

7 голосов
/ 14 января 2014

Теперь это включено в Visual Studio 2013 Express: http://msdn.microsoft.com/en-us/library/dd264975.aspx

Если Test Explorer не отображается, выберите Test в Visual StudioВ меню выберите Windows , а затем выберите Тестовый проводник .

enter image description here

1 голос
/ 20 мая 2018

В качестве обновления я в настоящее время использую Visual Studio Express for Desktop, пакет VS полностью перестроен с 2010 года и более точно отражает «старшего брата».

Теперь модульные тесты доступны как встроенныеи работает так же (я не проверял всю функциональность), как Visual Studio non-Express.

0 голосов
/ 10 июня 2013

(Примечание: я знаю, что это сообщение старое, но это может кому-то помочь)

Как Энди писал выше, вы можете использовать NUnit .
Но настройки в ссылке, опубликованной Энди, больше не работают в VS C # 2010.
Вот настройки, которые я использую в окне Внешние инструменты:

Команда: C: \Программные файлы (x86) \ NUnit 2.6.2 \ bin \ nunit-x86.exe
(в каталоге bin также есть nunit.exe )

Аргументы: $ (ProjectDir) $ (ProjectFileName)
Исходный каталог: $ (ProjectDir) bin / Debug / $ (TargetName) $ (TargetExt)

0 голосов
/ 02 декабря 2012

Вы всегда можете установить дополнительный класс с методом Main () в проекте, выбрать его в качестве объекта запуска в вашем проекте и отладить его оттуда. Это может не подходить в ситуации, когда выполняются более сложные задачи, поскольку вы не можете воспользоваться более специфичными для тестирования функциями, но это может быть полезно в некоторых более простых проектах. Если ваш проект является библиотекой классов, рассмотрите возможность преобразования его в консольное приложение, а затем переключите его обратно после завершения тестирования.

0 голосов
/ 01 декабря 2011

Посмотрите на NHarness на codeplex, очень простую библиотеку, которая позволяет вам запускать тестовые устройства NUnit в тестовом проекте.Это позволяет вам выполнять отладку с помощью модульных тестов, если это необходимо.

Пример (со страницы кодплекса) бегуна тестов:

    public class RunTests
    {
        public static void Main(string[] args)
        {
            TestResults results = Tester.RunTestsInClass<Tests>();

            Console.WriteLine("Tests Run: {0}", results.NumberOfResults);
            Console.WriteLine("Results {0}:PASSED {1}:FAILED", results.NumberOfPasses, results.NumberOfFails);
            Console.WriteLine("Details:");

            foreach (TestResult result in results)
            {
                Console.WriteLine("Test {0}: {1} {2}",
                                            result.MethodName,
                                            result.Result,
                                            result.Result == TestResult.Outcome.Fail ? "\r\n" + result.Message : "");
            }

            Console.ReadLine();
        }
    }

Преимущество этой библиотеки в том, чтокласс TestResults может использоваться для получения информации о выполненных тестах, поэтому библиотека может также использоваться в пользовательских приложениях для модульных тестов

...