我可以运行一个单独的测试用例,它从命令行中获取单个字符串值没有问题:
例如/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
我对这是用户错误还是不支持的功能感兴趣。这对我正在尝试做的事情非常有用。
答案 0 :(得分:2)
看起来问题是测试用例列表在','字符上被拆分,导致参数化测试用例出现明显问题。错误信息是here,当有更多信息时,我会尝试在此处发布结论。
答案 1 :(得分:0)
看起来应该在NUnit 2.6.0及更高版本中修复此行为。
如果你仍然像我一样(在这里使用NUnit 2.6.4)遇到这个问题,那么你可能需要通过在它们前面放一个反斜杠来转义双引号字符。
答案 2 :(得分:-1)
不是它可以帮助您解决特定问题,但是您是否知道JetBrains的ReSharper有一个VS的NUnit testrunner?可能还有更多工具可以使用它。我有Resharper,从来没有需要从控制台运行单一测试(此外,它有一大堆很酷的重构工具)。我希望这听起来不像垃圾邮件。我只是想知道为什么你从控制台运行单个测试。