【发布时间】:2009-04-16 20:00:46
【问题描述】:
我有两个这样的类(在实际项目中):
namespace app {
internal class A {
}
internal class B {
private List<A> list;
private void SomeMethodToTest() {
list = new List<A>() { new A() };
}
}
我的单元测试看起来像
[TestClass()]
public class ATest {
[TestMethod()]
public void TestSomeMethod() {
B_Accessor b = new B_Accessor();
b.SomeMethodToTest();
Assert.AreEqual(1, b.list.Count); // ERROR ON THIS LINE
}
}
在标记的行上,我收到一个 InvalidCastException,说“无法将 System.Collections.Generic.List'1[app.A] 类型的对象转换为 System.Collections.Generic.List'1[app.A_Accessor] ]
问题在于,因为 A 是内部的,所以自动生成的类 B_Accessor 看起来像
[Shadowing("app.B")]
public class B_Accessor : BaseShadow {
... stuff ...
[Shadowing("list")]
public List<A_Accessor> list { get; set; }
... stuff ...
}
请注意,在 Accessor 类中,列表的类型是 List
除了公开 A 之外,我还能如何解决这个问题?
【问题讨论】:
标签: visual-studio-2008 unit-testing