4

假设您正在测试一个公共方法 A 和私有方法 B 的类,现在 B 只能间接测试。直接测试 B 的最佳方法是什么?

1) 使 Bpublic

2) 仅在测试期间公开 B `。

3)制作Bprotected

4) 使 B 具有默认访问权限。

4

3 回答 3

3

代码的可测试性不应决定您的方法的访问级别。

当您将方法设为私有时,它通常是为了模块化您的代码,或者可能是其他一些重构。如果它不是公开的 API,那么无论如何它都不是单元测试的候选对象。

所以,你首先要问的问题是:“我需要暴露 B() 吗?” 如果答案仍然是否定的——那么关于直接测试它的问题就变得无关紧要了。

单元测试方法的一个非常有用的链接来自Clean code talk

于 2013-08-04T06:02:49.573 回答
2

最好的方法是将 beta 方法包设为私有,并将 SomehtingTest 类与 Something 类放在同一个包中。

于 2013-08-04T04:51:02.633 回答
0

最好的方法是将其公开,但如果这不可能,那么您也可以使用反射来测试它。

完整的细节可以在这里看到如何测试一个具有私有方法、字段或内部类的类?

于 2013-08-04T04:00:09.107 回答