如何在单元测试期间访问受保护的基类成员?

ama*_*eur 5 c# tdd unit-testing mstest rhino

我正在使用犀牛模拟在mstest中创建一个单元测试.我有一个继承B类的A类.我正在测试A类并为我的测试创建一个实例.它继承的类"B"有一些受保护的方法和受保护的属性,我希望为了测试的利益而访问它们.例如,验证我的基类上的受保护属性是否具有预期值.

我在测试过程中如何访问B类受保护属性的任何想法?

sll*_*sll 6

从单元测试的角度来看,这是错误的方法.您应该只测试公共接口并确保它的行为符合预期,您不应该关心私有/受保护的实现细节.所以有:

  • 您要测试的方法/属性确实应该是公共的OR
  • 您的测试用例/特定测试实现是错误的

编辑:

有时,在为无法更改的遗留代码编写单元测试时,您可能被迫访问受保护的成员,在这种情况下,解决方案可能是创建一个包装器,公开内部/公共属性/方法以访问受保护的成员.

还有什么有趣的,你通过TDD标记标记的问题,想象一下当你没有实现时如何能够访问单元测试中的实现细节?这就是TDD的工作原理 - 你有一个接口并在实现完成之前开始编写单元测试.