0

我正在为我正在设计的图形语言开发一个解释器,并且我想将 TDD 应用到我的开发过程中(Java 中的所有代码)。我的解释器只有一个公共功能:execute()执行给定的图表。要执行图表,该类应使用许多内部(私有)方法。我想使用 TDD 创建这些方法,但由于它们是私有的,我想不出一种访问它们的方法。我究竟做错了什么?

谢谢

4

4 回答 4

2

您始终可以将私有方法包设为私有,并从同一包中的测试中对其进行测试。这当然意味着您需要一些纪律并且不要尝试调用相同的包私有方法。

于 2012-06-21T08:53:38.423 回答
1

将您的测试代码放在同一个包中,并将私有方法更改为具有默认(包)可见性。如果您担心过多地打开类,以致同一个包中的行为不端代码可能会做坏事,那么将类+测试代码移动到自己的包中。

于 2012-06-21T08:53:51.963 回答
1

我们做这种事情的方式是拥有测试文件(输入和预期输出)。向公共函数抛出数据,然后根据预期检查结果。不知道这对您的情况有多容易,但它使您的测试和生产代码实现不可知。

于 2012-06-21T09:55:11.423 回答
1
  1. 私有函数是否足够复杂以至于它们需要自己的测试(即执行的多个测试不会覆盖它们)?如果是,也许您需要将它们分解为协作者,尤其是在私有方法太多的情况下。针对私有方法编写测试也会损害未来的重构,即假设您合并/拆分了一些私有函数,即使 Execute() 的功能仍然完好无损,您也会有一堆测试需要更新。
  2. 如果没有,只需根据需要为 Execute() 编写尽可能多的测试,以实现所需的置信度/路径覆盖率
于 2012-06-22T05:48:31.143 回答