如果我有一个接受输出参数并接受输入表单控制台的函数 -
public void Test(out int a)
{
a = Convert.ToInt16(Console.ReadLine());
}
如何在 NUnit 测试期间使用 Console.Readline() 接受输入?如何使用 NUnit 来测试此方法?
我尝试将此代码用于我的 NUnit 测试用例 -
[TestCase]
public void test()
{
int a = 0;
ClassAdd ad = new ClassAdd();
ad.addition(out a);
//a should be equal to the value I input through console.Readline()
Assert.AreEqual(<some value I input>, a, "test");
}
如何测试接受输出参数并接受来自控制台的用户输入的方法?
最佳答案
您可以使用System.Console
的SetIn
方法来设置输入源:
StringReader reader = new StringReader("some value I input" + Enivronment.NewLine);
Console.SetIn(reader);
int a = 0;
ClassAdd ad = new ClassAdd();
ad.addition(out a);
Assert.AreEqual(<some value I input>, a, "test");
编辑:要测试多个值,只需用新行分隔每个输入:
string[] lines = new[] { "line1", "line2" };
StringReader input = new StringReader(String.Join(Environment.NewLine, lines));
Console.SetIn(input);
string input1 = Console.ReadLine(); //will return 'line1'
string input2 = Console.ReadLine(); //will return 'line2'
关于c# - 如何使用 NUnit 测试带有 out 或 ref 参数的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3487696/