【发布时间】:2026-02-10 09:35:01
【问题描述】:
我发现Do you test private method 上的讨论内容丰富。
我已经决定,在某些类中,我希望拥有受保护的方法,但要对其进行测试。 其中一些方法是静态的和简短的。因为大多数公共方法都使用它们,所以我以后可能可以安全地删除测试。但是为了从 TDD 方法开始并避免调试,我真的很想测试它们。
我想到了以下几点:
- Method Object 在an answer 中的建议似乎是矫枉过正。
- 从公共方法开始,当代码覆盖率由更高级别的测试提供时,将它们设为保护并删除测试。
- 继承具有可测试接口的类,使受保护的方法公开
最佳做法是什么?还有什么吗?
看起来,JUnit 自动将受保护的方法更改为公共的,但我没有深入了解它。 PHP 不允许通过 reflection 进行此操作。
【问题讨论】:
-
也许他想测试私有属性是否设置正确,而仅使用 setter 函数进行测试的唯一方法是公开私有属性并检查数据
-
所以这是讨论式的,因此没有建设性。再次:)
-
你可以称其为违反网站规则,但仅称其为“不具建设性”是......这是侮辱。
-
@Visser,这是在侮辱自己;)
-
完全有可能他不想测试公共类接口本身,而是它呈现给子类的接口(可以访问受保护的方法)跨度>
标签: php unit-testing phpunit