<分区>
我有一个类负责将契约(Contract)从 CSV 文件导入数据库。
类本身只有一个启动导入的公共(public)方法,其他方法都是私有(private)的(因为只有类本身会使用,并且它们持有逻辑)。
我开始使用 Spock 对这个类进行测试,并且有很多私有(private)方法,我应该如何测试它?
我应该将它们公开进行测试吗?只测试主要方法,公共(public)方法?
最好的是什么?
<分区>
我有一个类负责将契约(Contract)从 CSV 文件导入数据库。
类本身只有一个启动导入的公共(public)方法,其他方法都是私有(private)的(因为只有类本身会使用,并且它们持有逻辑)。
我开始使用 Spock 对这个类进行测试,并且有很多私有(private)方法,我应该如何测试它?
我应该将它们公开进行测试吗?只测试主要方法,公共(public)方法?
最好的是什么?
最佳答案
理论上,您的私有(private)方法最终会被其中一种公共(public)方法使用,否则它们根本不会被使用。因此,通常您将测试设置为使用必要的上下文调用公共(public)方法,以便它命中您的私有(private)方法。
单元测试主要是测试编译单元(即类)。您可以直接对方法进行单元测试,但它们必须是公开的,这与拥有一个漂亮干净的 API 背道而驰。
因此,请充分测试您的公共(public)方法以命中所有私有(private)方法。私有(private)方法是类的内部机制,不需要直接对其进行测试。
关于具有许多私有(private)方法的 Java 测试类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27969920/