NUnit не работает.

Я создал тестовый набор в NUnit, который ссылается на несколько различных unit test светильников в различных сборках.

В основном я использовал код примера из NUnit docs:

namespace NUnit.Tests
{
    using System;
    using NUnit.Framework;
    using System.Collections;

    public class AllTests
    {
        [Suite]
        public static IEnumerable Suite
        {
            get
            {
                ArrayList suite = new ArrayList();
                suite.Add(new VisionMap.DotNet.Tests.ManagedInteropTest.DotNetUtilsTest());
                return suite;
            }
        }
    }
}

Моя цель - добавить несколько тестов в список выше, чтобы я мог запускать их все в пакете.

Но когда я пытаюсь загрузить DLL в графический интерфейс NUnit, я получаю следующее: alt text

Что я делаю неправильно?

Я знаю, что документы говорят, что GUI не будет запускать пакеты, но я тоже попробовал консоль. Может кто-нибудь, пожалуйста, скажите мне, для чего подходят люксы и как я могу использовать их для достижения своей цели?

Я использую nunit 2.5.0.9122.

Edit

Ну, ответов нет. Я нашел альтернативное решение в конце: Категории. Я группирую тестовые приборы, предоставляя им соответствующие категории, а затем я могу запустить подмножество из них в пакетном режиме, все еще игнорируя другое подмножество.

Тем не менее, очень странно, что эта функция Suite, кажется, полностью сломана.

Ответы

Ответ 1

Сьюты вообще не нужны ни для чего. Если вы только хотели использовать их для определения того, какие тесты выполняются и не запускаются, это намного лучше достигается с помощью атрибутов Category. Это то, что вы в итоге сделали, и звучит как наилучшее решение вашей проблемы.

Однако для других и будущих ссылок вы можете использовать Suites в Nunit. Вы должны запускать их с консоли и использовать только параметр /fixture. Например, чтобы запустить пакет, указанный выше, вы должны запустить (если ваш класс был скомпилирован в сборку AllTests.dll):

nunit-console /fixture:AllTests.Suite AllTests.dll

Вы не увидите никаких доказательств или способов запуска наборов в графическом интерфейсе - это указано в документации. Однако вы можете запускать их из консоли, встроенной в графический интерфейс, используя команды, подобные приведенным выше.


Я использую пакеты в некоторых своих тестах, потому что у меня есть некоторые нечетные варианты использования, которые требуют от меня иногда передавать аргумент моим методам тестирования. Я делаю это, создавая набор, такой как ниже. Таким образом, для них есть какое-то использование, просто нет необходимости в вашем случае.

[Suite]
    public static IEnumerable MySuite
    {
        get
        {
            var suite = new ArrayList{new TestClass1(arg1), TestClass2(arg2)};
            return suite;
        }
    }

Ответ 2

Есть ли причина, по которой вы возвращаете "IEnumerable" вместо "TestSuite"?

[Suite]
public static TestSuite Suite 

Обновление

Считывая мелкий шрифт в нижней части страницы на сайте NUnit, похоже, что тесты типа класса не отображаются в бегуне Gui, поэтому я думаю, что проблема:)

Сьюты в настоящее время не отображаются в Gui или автоматически запускаются либо бегуном, когда они встречаются. Историческая цель механизма Suite заключалась в том, чтобы обеспечить способ агрегирования тестов на верхнем уровне каждого прогона. Следовательно, они поддерживаются только при использовании с параметром /fixture на консоли или в командной строке gui.

Обновление 2

Я не уверен, чего вы пытаетесь достичь с помощью функции "Люкс", но если вы пытаетесь найти способ настройки набора тестовых сборок для совместного использования, я использовал " NUnit Test Projects", чтобы сделать это в прошлом (это всего лишь xml config file listing test dlls). Это позволяет настроить фиксированный набор ссылок на тестовую сборку, а затем загрузиться в графический интерфейс пользователя или запустить консоль:

http://www.nunit.org/index.php?p=multiAssembly&r=2.5.5