我对 C# 很陌生,来自 C++。我正在用 C# 编写一个测试框架,我希望编写测试用例尽可能简单。
我有两个问题无法找到最终的解决方案。因此,我请求一点帮助。
问题 #1
在 C# 中是否可以将不同类型作为函数的参数传递?
我想调用函数的方式如下:
[Test]
public void TestCase1() => RunTestCase("test_data.csv",
// from_m, to_m, parameter_to_test, operator, expected_values
( 1000, 1e6, "vehicle_speed", Operator.Greater, 50.0 // <-- double),
( 0, 1e6, "vehicle_acc", Operator.MinMax, {500.0, 700.0} // <-- double[]),
( 0, 70, "vehicle_gear", Operator.ValueSet, {1, 2, 3, 4} // <-- int []),
( 0, 10, "vehicle_gear", Operator.Gear, 1 // <-- int)
(...),
);
如您所见,可以是 ,expected_values
或double
如何编写函数的签名以允许编写这样的测试用例?double[]
int
int[]
RunTestCase
目前RunTestCase
函数签名如下:
public void RunTestCase(string test_data_file,
params (double start,
double end,
string property,
Operator op,
/* what to use instead of double */ double values)[] expected)
我的问题是可以values
有什么类型,以实现这一目标?
是否可以使用模板,类似于 C++?
问题2
像我在示例中所做的那样创建数组是否可行?我想要实现的是避免编写new int[] {1, 2, 3}
和只写{1, 2, 3}
. 正如我所说,我最感兴趣的是易于写作。
谢谢!