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

为了减少重复,我为连接的客户端创建了一个吸气剂。当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

09-15 20:02