C# 自动夹具单元测试参数设置

C# 自动夹具单元测试参数设置,c#,unit-testing,autofixture,C#,Unit Testing,Autofixture,如何为以下单元测试设置AutoFixture: [Theory, ... ] // <- what goes here? public void MyTest(int param1, string param2) { ... } [理论,…]/如果需要随机值,只需使用[自动数据]: [Theory, AutoData] public void MyTest(int param1, string param2) { ... } 如果您需要一些预定义的测试数据,您可以使用。在下面

如何为以下单元测试设置AutoFixture:

[Theory, ... ] // <- what goes here? 
public void MyTest(int param1, string param2)
{
  ...
}

[理论,…]/如果需要随机值,只需使用
[自动数据]

[Theory, AutoData]
public void MyTest(int param1, string param2)
{
  ...
}
如果您需要一些预定义的测试数据,您可以使用。在下面的示例中,
string
参数
param1
将获得属性中指定的值。
int
参数
param2
始终是随机的:

[Theory]
[InlineAutoData("predefined_string_1")]
[InlineAutoData("predefined_string_2")]
public void MyTest(string param1, int param2)
{
  ...
}

但是您需要在编译时知道这些值。如果“预定义”字符串是某种类型的属性名称,该怎么办?我需要能够将有效字符串传递给我的测试方法,而无需硬编码。这可能吗?>“但您需要在编译时知道这些值。”没错。如果要测试某些行为,而随机数据不足,则需要在编译时知道这些值。否则,如果没有指定输入测试数据,您将如何检查您的系统行为是否正确?我不认为它必须是完全随机的或完全硬编码的值。我希望通过测试数据,这些数据以某种方式格式化,以便我的测试有意义。在我的特定场景中,我需要的是字符串param是某种类型的属性名。我想对AutoFixtue说:“嘿,对于param2,从这个列表中获取一个随机字符串,其中列表是myType.GetPropertyNames()”。