Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 重构以公开用于单元测试的私有方法_Java_Design Patterns_Refactoring - Fatal编程技术网

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(){}

你目前的方法有什么问题?