NUnit не запускает тесты Suite

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

Я в значительной степени использовал пример кода из Нанит это:

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 в GUI NUnit, я получаю это:

что я делаю не так?

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

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

редактировать

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

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

2 ответов


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

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

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

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


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

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

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

[Suite]
public static TestSuite Suite 

обновление

читая мелкий шрифт внизу страницы на сайте NUnit, похоже, что тесты типа Suite не будут отображаться в GUI runner, поэтому я думаю, что это проблема:)

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

обновление 2

Я не уверен, что вы пытаетесь достичь с помощью функции "Suite", но если вы пытаетесь найти способ настройки набора тестовых сборок для совместного запуска, я использовал"Тестовые Проекты NUnit" сделать это в прошлом (это просто xml-конфигурационный файл с перечнем тестовых библиотек DLL). Это позволяет настроить фиксированный набор ссылок на тестовые сборки, а затем загрузить его в GUI или запустить с помощью консоли:

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