我有一个类,它处理一个字符串并依次对其执行许多操作。
这些操作需要按特定顺序完成。
示例:
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 等进行单元测试。
请注意,process1、2 等...可以是 2 行方法,也可以是大方法。
我需要以某种方式公开流程方法来测试它们。有没有一种设计模式可以实现这一点?
我考虑过使用枚举来实现这一点,但我认为这在某种程度上让它变得更加困惑。这个实现肯定不是最好的,但一看就知道发生了什么。
编辑:这种方法对我来说还不错,但是所有的过程方法都应该是私有(private)的。我想对它们进行单元测试。 我看到了这个question ,所以即使是私有(private)的我也可以测试它们,但第一步是确保它不能做得更好。
最佳答案
您可以看看http://www.codeproject.com/Articles/455228/Design-Patterns-3-of-3-Behavioral-Design-Patterns#Chain但也许这对你的任务来说有点矫枉过正。
我要做的是将process1
、process2
等提取到单独的类中。然后,您可以 a) 单独使用单元测试来测试它们 b) 将它们注入(inject)到您的类中,并按必要的顺序在 process
方法中使用它们。
另请参阅这篇文章:Design Pattern for a multi-step algorithm也许您会从中得到一些想法。
关于java - 重构以公开用于单元测试的私有(private)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36782320/