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