Запуск индивидуального параметризованного тестового примера с помощью nunit-console - PullRequest
6 голосов
/ 02 марта 2011

Я могу запустить отдельный тестовый сценарий, который без проблем принимает одно строковое значение из командной строки:

Например /run:Namespace.Class.Method("my input string")

Однако эта же процедура, похоже, не работаетдля меня с числовыми входами

Например: /run:Namespace.Class.Method(1,2,3)

В выводе указан правильный ввод как «тест для запуска», но на самом деле не выполняется никаких тестов

РЕДАКТИРОВАТЬ:

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

namespace GetTestsProj
{
    [TestFixture]
    class NunitConsoleTest
    {
        [TestCase(1,2,3)]
        [Test, Description("A simple test with parameterized numeric inputs")]
        public void TestNumeric(int a, int b, int c)
        {
            Assert.AreEqual(c, a + b);
        }

        [TestCase("My String")]
        [Test, Description("A simple test with parameterized string input")]
        public void TestSingleString(string a)
        {
            Assert.AreEqual("My String", a);
        }
        [TestCase("String1", "String2")]
        [Test, Description("A simple test with parameterized numeric inputs")]
        public void TestTwoStrings(string a, string b)
        {
            Assert.AreEqual("String1", a);
        }
    }
}

Вызов nunit-console.exe /run:GetTestsProj.NunitConsoleTest GetTestsProj\GetTestsProj\bin\debug\GetTestsProj.dll правильно выполняет все 3 теста

Вызов nunit-console.exe /run:GetTestsProj.NunitConsoleTest.TestNumeric GetTestsProj\GetTestsProj\bin\debug\GetTestsProj.dll правильно запускает 1 тест

Вызов nunit-console.exe /run:"GetTestsProj.NunitConsoleTest.TestSingleString(\"My String\")" GetTestsProj\GetTestsProj\bin\debug\GetTestsProj.dll правильно запускает 1 тестовый случай

Однако вызов nunit-console.exe /run:GetTestsProj.NunitConsoleTest.TestNumeric(1,2,3) GetTestsProj\GetTestsProj\bin\debug\GetTestsProj.dll запускает 0 тестовых случаев

И аналогично вызов nunit-console.exe /run:"GetTestsProj.NunitConsoleTest.TestTwoStrings(\"String1\",\"String2\")" GetTestsProj\GetTestsProj\bin\debug\GetTestsProj.dll запускает 0 тестовых случаев

Хотя nunit кажется для правильного распознавания ввода /run:

Selected test(s): GetTestsProj.NunitConsoleTest.TestNumeric(1,2,3)

Tests run: 0, Errors: 0, Failures: 0, Inconclusive: 0, Time: 0 seconds
  Not run: 0, Invalid: 0, Ignored: 0, Skipped: 0

и

Selected test(s): GetTestsProj.NunitConsoleTest.TestTwoStrings("String1", "String2")

Tests run: 0, Errors: 0, Failures: 0, Inconclusive: 0, Time: 0.0156256 seconds
  Not run: 0, Invalid: 0, Ignored: 0, Skipped: 0

Это все с использованием NUnit 2.5.9.10348

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

Ответы [ 3 ]

2 голосов
/ 09 марта 2011

Похоже, проблема в том, что список тестовых случаев разбит на символ ',', что вызывает очевидную проблему для параметризованных тестовых случаев. Информация об ошибке здесь , и я постараюсь опубликовать заключение здесь, когда появится дополнительная информация.

0 голосов
/ 22 сентября 2015

Похоже, это поведение должно быть исправлено в NUnit 2.6.0 и новее.

Если вы все еще сталкиваетесь с этой проблемой, как я (используя NUnit 2.6.4 здесь), то вам может понадобиться экранировать символы двойной кавычки, поставив перед ними обратную косую черту.

0 голосов
/ 07 марта 2011

Не то чтобы это помогло решить вашу конкретную проблему, но знаете ли вы, что ReSharper от JetBrains имеет тестовый прогон NUnit для VS?Вероятно, есть и другие инструменты, которые имеют это.У меня есть Resharper, и с тех пор у меня никогда не было необходимости запускать одиночный тест с консоли (кроме того, у него есть целая куча классных инструментов рефакторинга).Я надеюсь, что это не похоже на спам.Мне просто интересно, почему вы запускаете одиночные тесты с консоли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...