我有一个处理字符串的类,并依次对其执行许多操作。
这些行动需要按特定顺序进行。
示例:
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行方法还是大方法。
我需要过程方法以某种方式公开来测试它们。是否有设计模式可以实现这一目标?
我考虑使用枚举来实现这一目标,但我认为它在某种程度上让它变得更加混乱。这种实现并不是最好的,但是乍一看,你知道发生了什么。
编辑:这种做法对我来说并不算太糟糕,但所有流程方法都应该是私有的。我想对它们进行单元测试。 我看到了这个question,所以即使私有我也可以测试它们,但第一步是确保它不能做得更好。
答案 0 :(得分:1)
你可以看一下http://www.codeproject.com/Articles/455228/Design-Patterns-3-of-3-Behavioral-Design-Patterns#Chain但也许这对你的任务来说有点矫枉过正。
我要做的是将process1
,process2
等提取到不同的类中。然后你可以a)单独用单元测试测试它们b)将它们注入你的班级并按照process
方法按必要顺序使用它们。
还要看一下这篇文章:Design Pattern for a multi-step algorithm也许你会从那里得到一些想法。
答案 1 :(得分:0)
你可以指定你的"私人"方法作为包保护。只有相同包上的类(但来自不同的源文件夹,如src / main / java和src / test / java或来自不同项目的......)才能访问这些方法。
private void myPrivateMethod(){}
会变成
/*no visibility keyword for declaring a method package protected*/
void myPrivateMethod(){}