java - 使用 getter 但不分配返回值是不好的做法吗?

标签 java methods junit getter

我目前正在编写单元测试来测试客户端和服务器之间的连接。目前我有以下测试; 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/

相关文章:

java - 如何在测试中加载 spring HTTPInvoker 到 jetty?

java - 在andReturn中使用expect的方法参数

Spring 3.2.2 : MockMVC, 返回空结果

java - 在开发和部署期间断言语句的行为方式

java - Web 服务在单行中返回由标签分隔的多个值

java - 未使用 Hibernate 以正确的格式从数据库获取数据

ruby-on-rails - 在另一个Rails中使用 Controller 中的方法

java - Greenfoot 和 native Java 类

algorithm - 脱毛算法开发

java - Android onResume 有时会显示黑屏,有时它不会检测到用户交互