Her*_*sch 4 .net c# unit-testing mstest
我有一个基本上像这样的结构:
abstract class A
{
protected string Identificator { get; set; }
private void DoSomething()
{
// ...
DoSomethingSpecific();
}
protected abstract void DoSomethingSpecific();
}
Run Code Online (Sandbox Code Playgroud)
由于我需要的复杂性,我们需要对DoSomething方法进行单元测试,以确保它以相同的方式运行.这就是我创建以下存根的原因.
public class AStub : A
{
protected override void DoSomethingSpecific()
{
// nothing to do
}
}
Run Code Online (Sandbox Code Playgroud)
我使用PrivateObject类来访问类A的方法和属性,实例化类AStub.这工作了一段时间,并且由于某种原因,每当我尝试访问属性或方法时崩溃.
以下代码用于测试:
var sut = new CommonIodAdapterImpl();
var accessor = new PrivateObject(sut);
accessor.SetProperty("Identificator", "blablub");
accessor.Invoke("DoSomething", null);
// assert...
Run Code Online (Sandbox Code Playgroud)
引发的异常是MissingMethodException,告诉我没有找到属性或方法.但是当我调试并检查层次结构时,每个似乎都是正确的拼写.
谢谢您的帮助.
Rob*_*ick 11
您需要将PrivateType参数设置为基类以访问该级别的私有成员.
var accessor = new PrivateObject(sut, new PrivateType(typeof(A)));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5190 次 |
| 最近记录: |