public class Class1
{
private List<string> list;
public Class1()
{
list = new List<string>();
}
private addSomethingToList(string something)
{
// add something to the list
}
}
[TestClass]
public class DoSomethingToListTests
{
[TestMethod]
public void DoSomethingToList_Something()
{
string string1 = "something";
PrivateObject prob = new PrivateObject(new Class1());
object[] arg = { string1 };
prob.Invoke("addSomethingToList", string1);
List<string> expected = new List<string>();
expected.Add("something");
object actual = prob.GetField("list");
CollectionAssert.AreEqual(expected, actual);
}
}
这给了我
参数2:无法从'object'转换为System.Collections.ICollection'
论证2是实际的
和
“Microsoft.VisualStudio.TestTools.UnitTesting.CollectionAssert.AreEqual(System.Collections.ICollection,System.Collections.ICollection)”的最佳重载方法匹配具有一些无效参数
问题在于它将预期作为List进行评估,将实际作为对象进行评估。
有没有办法让它如此实际是一个列表?
我试过了
List<string/object> actual = prob.GetField("list");
但这给了我错误
无法将类型'object'隐式转换为'System.Collections.Generic.List'。存在显式转换(您是否错过了演员?)
答案 0 :(得分:1)
您可以新建一个用实际
填充的单个项目列表var actualList = new List<string>() { actual };
CollectionAssert.AreEqual(expected, actualList );