Har*_*ams 6 c# unit-testing mstest
我正在尝试编写一个比较两个数组的单元测试。我将单元测试定义如下:
[DataTestMethod]
[DataRow(
new[] { "COM3", "COM1", "COM2" },
new[] { "COM1", "COM2", "COM3" }
)]
...
public void TestCOMPortSorting(string[] unorderedPorts, string[] expectedOrderedPorts)
Run Code Online (Sandbox Code Playgroud)
但是,我的 IDE 抛出以下错误:
属性参数必须是属性参数类型的常量表达式、typeof 表达式或数组创建表达式
我尝试过使用外部变量,将数组定义为new string[],用这些数组创建单个数组,但都没有成功。
如何使用这两个数组作为单元测试的参数?
对于如此复杂的数据,改为使用DynamicData属性
该属性允许从方法或属性获取参数值。该方法或属性必须返回一个
IEnumerable<object[]>. 每行对应于测试的值。
[DataTestMethod]
[DynamicData(nameof(TestDataMethod), DynamicDataSourceType.Method)]
public void TestCOMPortSorting(string[] unorderedPorts, string[] expectedOrderedPorts) {
//...
}
static IEnumerable<object[]> TestDataMethod() {
return new[] {
new []{ new[] { "COM3", "COM1", "COM2" }, new[] { "COM1", "COM2", "COM3" } } //a data row
};
}
Run Code Online (Sandbox Code Playgroud)