cis*_*eat 4 c# reflection unit-testing properties
这是我有点担心的课程.我的目标是对地址列表进行单元测试:
public class LabelPrinter
{
private readonly IEnumerable<Address> _addresses;
public LabelPrinter(IEnumerable<Address> addresses)
{
_addresses = addresses;
}
public Document Create()
{
// ... Generate PDF, etc ...
}
}
Run Code Online (Sandbox Code Playgroud)
什么是最好的:
一般来说,私有成员不应该进行单元测试,因为类的私有成员所做的任何事情都应该以某种方式反映在对象的外部可测试行为中.换句话说,谁在乎那里发生了什么,只要它的外在行为应该如此.
对私人成员进行单元测试也会将您的测试与课堂内部相结合,使其更加脆弱.如果您决定稍后使用更高效的集合,即使对象的行为没有改变,您的测试也会中断.您尤其希望避免反射,因为按名称查找属性意味着如果属性名称发生更改,则测试会中断.
换句话说 - 如果你需要测试这个Address类,可以从它自己的单元测试中进行,而不是从LabelPrinter测试中进行.如果必须使用两种方法中的一种,请使用第二种方法,而不是反射.