Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.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 使用getter但不指定返回值是一种错误的做法吗?_Java_Methods_Junit_Getter - Fatal编程技术网

Java 使用getter但不指定返回值是一种错误的做法吗?

Java 使用getter但不指定返回值是一种错误的做法吗?,java,methods,junit,getter,Java,Methods,Junit,Getter,我目前正在编写单元测试来测试客户端和服务器之间的连接。目前我有以下测试:;isConnectionSuccessful、IsDisconnectionSuccessful和IsReconnectionSuccessful 为了减少重复,我为连接的客户端创建了一个getter。当getter测试客户端是否已连接时,我决定也在isconnectionsuccessful中调用它,但是这意味着不必要地返回客户端。但对于其他测试,这种方法似乎非常适合 使用这种方法可以吗,只是不从getter为isCon

我目前正在编写单元测试来测试客户端和服务器之间的连接。目前我有以下测试:;isConnectionSuccessful、IsDisconnectionSuccessful和IsReconnectionSuccessful

为了减少重复,我为连接的客户端创建了一个getter。当getter测试客户端是否已连接时,我决定也在isconnectionsuccessful中调用它,但是这意味着不必要地返回客户端。但对于其他测试,这种方法似乎非常适合

使用这种方法可以吗,只是不从getter为isConnectionSuccessful分配值,还是这是一个设计缺陷

为了澄清,我有以下测试/方法:

isConnectionSuccessful
//call getConnectedClient

isDisconnectionSuccessful
//call getConnectedClient and assign it
//disconnect logic....

isReconnectionSuccessful
//call getConnectionClient and assign it
//disconnect
//reconnect

getConnectedClient
//instantiate client
//check it is connected
//return client

我想你在这里谈论的是单元测试设计。如果是这样,测试遵循的规则与主要源代码稍有不同。您在测试中的主要目标是使测试易于理解,并提供“安全网”以支持对其测试的代码进行更改。要将这些目标应用于您的问题,读者可能不会立即意识到
getConnectedClient
执行连接检查,因此这是
isConnectionSuccessful
测试中唯一需要的。这可能是以不同方式编写测试的一个理由。另一方面,如果您觉得测试更容易理解,那么您可能只需要将
getConnectedClient
的名称更改为类似
connectClientAndVerifyConnection

我看不出这有什么不必要,getter应该返回一个值。如果您有一个名为
getClient
的getter;它应该返回客户端对象。是的,这就是问题所在;将其用于isDisconnectionSuccessful和isReconnectionSuccessful测试是有意义的,因为它们需要客户端对象,但是对于isConnectionSuccessful测试,尽管代码完全相同,而且对我来说只调用该方法以减少重复是有意义的,但它会导致返回客户端对象,而isConnectionSuccessful对该对象没有任何影响。因此,我猜这是一个设计缺陷?最初,该方法的目的是返回一个已验证为已连接的客户端,以便在isDisconnectionSuccessful和isReconnectionSuccessful测试中使用,在我创建它之后,我意识到我在isConnectionSuccessful测试中使用的代码与getConnectedClient方法中的代码相匹配。因此,我认为我可以通过调用getConnectedClient来减少isConnectionSuccessful测试中的重复,但它返回isConnectionSuccessful测试没有用的客户端。因此,减少重复是我们在主要源代码中努力实现的事情之一,但在测试中不太关心。在测试中,可读性可以胜过重复。我认为这是对你的判断。你能做的最好的事情就是问问和你一起工作的其他人哪种方式更容易理解。也许我只是想得太多了。我有一本TDD的书,书中说要重构以减少测试和主要源代码中的重复,但我想我应该像你说的那样做出决定,因为你是对的,现在还没有那么可读。