如何测试工厂隐藏的类?

时间:2017-09-30 14:03:11

标签: c# .net unit-testing architecture

上下文即可。我在[{1}}中嵌套了接口IVehicle,类VehiclesFactory和私有类Vehicle。因此除了VehiclesFactory kwnows之外的所有代码都没有关于VehiclesFactory的任何实现。

问题即可。我该如何对IVehicle进行单元测试?我应该这样做吗?

假设1 。我可以公开Vehicle。但是,这将允许所有代码写入Vehicle我试图避免。

假设2 。我可以在new VehiclesFactory.Vehicle(...)中创建一个新的公共方法,例如: g。,VehiclesFactory只调用IVehicle ForUnitTests_Vehicle(...)构造函数并将其参数传递给该构造函数(允许单元测试提供必要的模拟)。但是,这将允许所有代码调用这种奇怪的方法。

假设3 。工厂是一场瘟疫;到处使用Vehicle运算符。但是,这将更紧密地耦合我的代码。

1 个答案:

答案 0 :(得分:1)

  

我应该如何对车辆进行单元测试?

您可以使用反射在测试项目中创建Vehicle类的实例,或者将Vehicle类设置为内部,并使用InternalsVisibleToAttribute属性使其对测试项目可见。虽然从私人切换到内部将使您的课程对同一项目中的所有代码都可见,因此我不确定您是否可以接受。

  

我应该这样做吗?

由您决定,如果它包含应用程序关键逻辑,您可能应该对其进行测试。