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

afr*_*409 6 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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

该呼叫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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

这都是使用NUnit 2.5.9.10348

我对这是用户错误还是不支持的功能感兴趣.这对我想做的事情非常有用.

afr*_*409 2

看起来问题在于测试用例列表在“,”字符上分开,导致参数化测试用例出现明显的问题。Bug信息在这里,当有更多信息时我会尝试在这里发布结论。