使用nunit-console运行单个参数化测试用例

时间:2011-03-02 17:17:21

标签: c# nunit

我可以运行一个单独的测试用例,它从命令行中获取单个字符串值没有问题:

例如/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 个答案:

答案 0 :(得分:2)

看起来问题是测试用例列表在','字符上被拆分,导致参数化测试用例出现明显问题。错误信息是here,当有更多信息时,我会尝试在此处发布结论。

答案 1 :(得分:0)

看起来应该在NUnit 2.6.0及更高版本中修复此行为。

如果你仍然像我一样(在这里使用NUnit 2.6.4)遇到这个问题,那么你可能需要通过在它们前面放一个反斜杠来转义双引号字符。

答案 2 :(得分:-1)

不是它可以帮助您解决特定问题,但是您是否知道JetBrains的ReSharper有一个VS的NUnit testrunner?可能还有更多工具可以使用它。我有Resharper,从来没有需要从控制台运行单一测试(此外,它有一大堆很酷的重构工具)。我希望这听起来不像垃圾邮件。我只是想知道为什么你从控制台运行单个测试。