使用Moq测试抽象类
我正在尝试对抽象类中的方法运行unit testing。 我浓缩了下面的代码:
抽象类:
public abstract class TestAb { public void Print() { Console.WriteLine("method has been called"); } }
测试:
[Test] void Test() { var mock = new Mock(); mock.CallBase = true; var ta = mock.Object; ta.Print(); mock.Verify(m => m.Print()); }
信息:
Method is not public
我在这做错了什么? 我的目标是使用Moq框架测试抽象类中的方法。
该消息是因为您的Test方法不公开。 测试方法需要公开。 即使在公开测试方法之后,它也会失败,因为您只能validation抽象/虚拟方法。 因此,在您的情况下,您必须将方法设置为虚拟,因为您已实现。
如果你想在这样的抽象类上模拟方法,那么你需要使它成为虚拟或抽象。