测试需要特定私有方法调用的单元?

时间:2015-03-23 10:11:26

标签: unit-testing testing

我有一个测试困境:

我正在为单位A编写单元测试。我即将测试的方法是func(B param)。在(非测试)代码中,调用func(..)的唯一位置是在类C中,它也是项目中唯一可以实现类型B的变量的地方(到作为参数发送到func(B param),因此实例化方法为private

现在,我不确定如何在单元测试中创建B实例 。 因为我可以在创建private的方法的方法声明中将public更改为B,但我感觉不对,因为它会将方法公开给其余的项目。

我也可以简单地将B创建方法复制到Unit测试类中,但我讨厌重复代码。 这种情况是否有一些已知的最佳做法?

非常感谢, 迪马

2 个答案:

答案 0 :(得分:1)

你会考虑使用像EasyMock和Mockito这样的模拟框架来创建一个" test double"你的班级B的对象在这里。

答案 1 :(得分:1)

根据经验,只有公共方法应该直接进行测试。通过扩展,公共代码应该测试所有私有代码。根据您使用的语言,您还可以强制将较少公开的代码暴露给单元测试框架而无需更改每个方法(例如C#中的InternalsVisibleTo),但我接受此选项不可用使用所有框架的所有语言。

除了单元测试之外,你的军械库中的另一个工具应该是某种代码覆盖工具,以确保尽可能多的代码覆盖你的代码。