我正在学习使用单元测试,我创建了一个项目,添加了xunit参考。 而以下代码:为什么xunit不允许测试带参数的方法?
namespace UnitTestProject
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
[Fact]
private void test(int number1, string number2)
{
int result = number1 + Convert.ToInt32(number2);
Assert.IsType(Type.GetType("Int32"), result);
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}
当我使用的xUnit GUI工具运行测试,它表示:
UnitTestProject.Form1.test信息:System.InvalidOperationException:事实 方法UnitTestProject.Form1.test不能有参数堆栈跟踪: 于Xunit.Sdk.FactCommand.Execute(对象识别TestClass)
Xunit.Sdk.FixtureCommand.Execute(对象识别TestClass)
Xunit.Sdk.BeforeAfterCommand.Execute(对象识别TestClass)
Xunit.Sdk.LifetimeCommand.Execute(对象识别TestClass)
Xunit.Sdk.ExceptionAndOutputCaptureCommand.Execute(对象识别TestClass)
那么,怎样才能我测试用的参数的方法/功能?
谢谢,但我可以将InlineData设置为随机值吗?或者更好地说,InlineData接受内联方法/变量? – Cheung
你可以为什么不。看到下面的一个脏例子。 – Alina
@Shiba一般你不应该在测试中使用随机值。在您的示例方法中,如果一个随机数字失败,您将不知道导致问题的数字是什么。尽量使测试具有确定性,并提供一系列预期的,意外的和极端的输入。 – DaveShaw