2010-05-27 5 views
12
.

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

Я довольно много использовал пример кода из NUnit's 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 в GUI NUnit, я получаю это: alt text

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

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

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

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

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

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

+0

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

+0

Позор щедрот не помог ... Ответ на этот вопрос не подходит, чтобы ответить на вопрос. –

+0

Я всегда использую категории для такого рода вещей. По-видимому, он более широко поддерживается. –

ответ

3

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

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

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

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


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

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

Кстати, если кто-то знает лучший способ передать аргументы/контролировать поведение теста во время выполнения, чем то, что я сделал, прокомментируйте. Я потратил некоторое время на поиск документов Nunit и списков рассылки, и это было лучшее, что я мог придумать! – imoatama

3

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

[Suite] 
public static TestSuite Suite 

Update

Чтение мелких печати в нижней части страницы на сайте NUnit, это выглядит как тесты типа люкс не будут показывать в в бегуна Гуй, так что я думаю, что это вопрос :)

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

Update 2

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

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

+0

Вот что говорят документы: http://www.nunit.org/index.php?p=suite&r=2.4.7 Я думаю, что это связано с развязкой версии NUnit от самого теста. –

+0

a. Я не использую параметр/fixture и, что более важно, b. Как _am_ Я должен был запустить пакет? Я попробовал как GUI, так и консоль. Это не работает. –

+0

Спасибо, я попробую это вместо этого. Но, чтобы ответить на ваш вопрос, да, это то, чего я пытаюсь достичь, и у меня создалось впечатление, что для этого и предназначены. Если нет, для чего они нужны? –

Смежные вопросы