Java 重构以公开用于单元测试的私有方法
我有一个类处理一个字符串,并依次对其执行许多操作 这些行动需要按照特定的顺序进行 例如:Java 重构以公开用于单元测试的私有方法,java,design-patterns,refactoring,Java,Design Patterns,Refactoring,我有一个类处理一个字符串,并依次对其执行许多操作 这些行动需要按照特定的顺序进行 例如: public String process(String stringToProcess) throws Exception { processedString = process1(processedString); processedString = process2(processedString); processedString = process3(processedS
public String process(String stringToProcess) throws Exception {
processedString = process1(processedString);
processedString = process2(processedString);
processedString = process3(processedString);
processedString = process4(processedString);
...
processedString = process10(processedString);
...
return processedString;
}
我确信有更好的方法来重构它,使它更干净,但最重要的是,我希望能够对process1、process2等进行单元测试
请注意,进程1、2等。。。可以是2行方法或大方法
我需要过程方法以某种方式公开以测试它们。是否有一种设计模式可以实现这一点
我曾想过使用enum来实现这一点,但我认为这会让它变得更加混乱。这个实现肯定不是最好的,但一眼就知道发生了什么
编辑:这种方法对我来说还不错,但所有的过程方法都应该是私有的。我想对它们进行单元测试。
我看到了这一点,所以即使是私人的,我也可以对它们进行测试,但第一步是确保它做得再好不过。您可以看一下,但这可能是对您的任务的一种过度使用
我要做的是将process1
、process2
等提取到单独的类中。然后,您可以a)分别使用单元测试对它们进行测试b)将它们注入到类中,并按必要的顺序在process
方法中使用它们
看看这篇文章:也许你会从中得到一些想法。你可以将你的“私有”方法指定为包保护。只有同一个包上的类(但来自不同的源文件夹,如src/main/java和src/test/java或…来自不同的项目)可以访问这些方法
private void myPrivateMethod(){}
会变成
/*no visibility keyword for declaring a method package protected*/
void myPrivateMethod(){}
你目前的方法有什么问题?