如何测试只有一个小API但有许多私有函数的类?

时间:2012-06-21 08:50:40

标签: java tdd

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

由于

4 个答案:

答案 0 :(得分:2)

您始终可以将私有方法包设为私有,并在同一个包中的Test中测试它们。这当然意味着您需要一些规则,并且不要尝试调用相同的包私有方法。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

  1. 私有函数是否足够复杂以至于需要自己的测试(即多次执行测试不会覆盖它们)?如果是,也许你需要将它们分解为合作者,特别是如果有太多的私有方法。针对私有方法编写测试也会影响将来的重构,即假设您合并/拆分一些私有函数,即使Execute()的功能仍然完好,您也需要进行一系列测试才能更新。
  2. 如果没有,只需根据需要为Execute()编写尽可能多的测试,以实现所需的置信/路径覆盖