我目前正在编写单元测试来测试客户端和服务器之间的连接。目前我有以下测试; isConnectionSuccessful、isDisconnectionSuccesful 和 isReconnectionSuccesful。
为了尝试减少重复,我为连接的客户端创建了一个 getter。当 getter 测试客户端是否已连接时,我决定也在 isConnectionSuccesful 中调用它,但这意味着不必要地返回客户端。但对于其他测试,这种方法似乎非常适合。
是否可以采用这种方法,只是简单地不为 isConnectionSuccessful 的 getter 分配值,或者这是一个设计缺陷?
只是为了澄清我有以下测试/方法:
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
即可。
关于java - 使用 getter 但不分配返回值是不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10564925/