Java 服务层中的私有方法

Java 服务层中的私有方法,java,spring,unit-testing,spring-boot,private-methods,Java,Spring,Unit Testing,Spring Boot,Private Methods,我有一个情况: 我想提供一个具有一个功能的服务类,例如: 基于某些参数生成json文件。。所以我有一个公共方法,一些由公共方法调用的私有方法。有一些私有方法,现在我在对它们进行单元测试时遇到了问题。我知道各种可能性(没有测试私有方法,将它们公开(没有!),refelctions,package private),最好的解决方案是package private解决方案,但服务类在xx.service package内部,我只希望在外部看到一个方法 我使用的是SpringBoot,我的问题是:在服务

我有一个情况: 我想提供一个具有一个功能的服务类,例如: 基于某些参数生成json文件。。所以我有一个公共方法,一些由公共方法调用的私有方法。有一些私有方法,现在我在对它们进行单元测试时遇到了问题。我知道各种可能性(没有测试私有方法,将它们公开(没有!),refelctions,package private),最好的解决方案是package private解决方案,但服务类在xx.service package内部,我只希望在外部看到一个方法

我使用的是SpringBoot,我的问题是:在服务类中保留私有方法可能是一种糟糕的方法?也许可以将它们移动到任何类型的util类?(老实说,方法是一种util方法.)


请帮助:)

如果测试中的公共方法使用了太多的私有方法,并且很难设置/维护测试用例,那么可能是时候将一些逻辑提取到专用类中了

理想情况下有一个/两个公共方法

然后单独测试这些帮助器类(现在测试应该很简单),然后在主服务中简单地将它们作为依赖项注入。
然后,您可以根据自己的喜好在主服务测试中模拟这些依赖项。

谢谢您的回答。谢谢您的回答。但是我的私人方法很短。。它们专门用于通过一种公共方法实现的特定用例。例如:公共文件doSth(name){if(existFileWithName(name)){return modifyFile(name);}}}private existFileWithName(name){…}我可以测试公共方法,它使用私有方法。。。但我正在尝试TDD,首先要编写和测试私有方法的功能性…你永远不会测试私有方法。。如果您在public方法中使用了一些私有方法,并且仍然可以轻松地创建测试用例(这些测试用例简短而切中要害),那么您的好。。当您在创建这些测试时遇到问题。。给他们命名。。维护。。那么,提取和创建专门的类在服务层生成JSON可能是一个错误。服务层应该操作域对象。从JSON到JSON的转换应该在表示层中。这只是一个例子;)