Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# XUnit使用字典作为成员数据_C#_Xunit - Fatal编程技术网

C# XUnit使用字典作为成员数据

C# XUnit使用字典作为成员数据,c#,xunit,C#,Xunit,我对如何让XUnit测试方法接受字典作为参数的语法有困难。这是我被破坏的代码: Public static Dictionary<string, string> vals = new Dictionary<string, string> { { "a", "1" }, { "b", "2" }, { "ca", "3" } }; public static object[] dicList = new object[] { vals }; [Theory] [Membe

我对如何让XUnit测试方法接受字典作为参数的语法有困难。这是我被破坏的代码:

Public static Dictionary<string, string> vals = new Dictionary<string, string> { { "a", "1" }, { "b", "2" }, { "ca", "3" } };
public static object[] dicList = new object[] { vals };

[Theory]
[MemberData(nameof(dicList))]

public void CheckSomething_ReturnsSomething(Dictionary<string, string> values)
{
 test stuff...
publicstaticdictionary vals=新字典{{“a”,“1”},{“b”,“2”},{“ca”,“3”};
公共静态对象[]dicList=新对象[]{VAL};
[理论]
[成员数据(名称(dicList))]
public void CheckSomething\u returnsMething(字典值)
{
测试材料。。。
我从抛出的错误中得到一个错误,我知道我需要一个

IEnumerable<object[]>
IEnumerable
我不知道如何用字典来实现这一点

已按建议添加了一些代码:我仍然收到一个错误:

public static Dictionary<string, string> vals = new Dictionary<string, string> { { "a", "1" }, { "b", "2" }, { "ca", "3" } };
public static IEnumerable<object[]> dicList = new List<object[]> { new object[] { vals } };
[Theory]
[MemberData(dicList)] //error here 
    public void DriverLogon_CheckParams(Dictionary<string, string> values)
    {
    }
publicstaticdictionary vals=新字典{{“a”,“1”},{“b”,“2”},{“ca”,“3”};
公共静态IEnumerable dicList=新列表{new object[]{vals};
[理论]
[MemberData(dicList)]//此处出错
public void DriverLogon\u CheckParams(字典值)
{
}
新的错误是

error. "Cannot convert from IEnumerable<object[]> To string
error.”无法从IEnumerable转换为字符串

dicList必须是一个
IEnumerable
,如错误消息所述。这是因为dicList中的一个项目包含一个测试的所有参数值(这对您的情况无关紧要,因为您只有一个参数,但最好知道)

因此,dicList将成为一个
列表
,而不仅仅是普通对象数组:

public static Dictionary<string, string> vals = new Dictionary<string, string> { { "a", "1" }, { "b", "2" }, { "ca", "3" } };
public static IEnumerable<object[]> dicList = new List<object[]> { new object[] { vals } };
publicstaticdictionary vals=新字典{{“a”,“1”},{“b”,“2”},{“ca”,“3”};
公共静态IEnumerable dicList=新列表{new object[]{vals};

我使用了您的代码,但有一个错误。“无法从IEnumerable转换为字符串。@建议的解决方案工作正常,
对象[]中的每一项
对应于测试方法中的参数,在您的案例中,
字典
。否则请共享其余代码,这将导致error@PaulStanleydicList是对象数组的IEnumerable,每个数组中都有作为参数进入测试方法的值在
dicList
中,测试运行一次。如果有2个,则测试将运行两次,第一个测试使用dicList[0]的值,第二个测试使用dicList[1]的值。感谢您添加了更多代码以显示错误位置:)@MemberData属性使用成员的名称,因此它应该是
[MemberData](nameof(dicList))]
(我认为您在原始代码示例中的描述是正确的)。