gpt4 book ai didi

java - 最佳实践 : Unit testing a method that takes in a Socket as an argument?

转载 作者:行者123 更新时间:2023-11-30 04:48:27 26 4
gpt4 key购买 nike

我尝试对一类方法进行单元测试,这些方法接受它们都读取和写入的 Socket 对象。我想知道,解决这个问题的最佳方法是什么?我在一个团队中工作(这是一个大学项目),并且只负责这个(java)类,因此完全重构代码并不是真正的选择。

是否有任何类型的模拟套接字可用,例如“Mocket”或其他东西?您将如何解决这个问题?

正如我所提到的,我是一名大学生,所以我期待从论坛的智慧中学习。感谢您抽出宝贵的时间来回答。

最佳答案

为了使您的代码可测试,依赖于 Socket 的类应该依赖于套接字的抽象 - 例如,公开您使用的方法(例如读取和写入)的简单接口(interface)。您的应用程序将使用真正的 Socket 类的包装器,但在单元测试中您将能够使用模拟(请检查 JMock )。

考虑:

public interface ISocket
{
byte[] read();
int write(byte[] content);
}

public class SocketWrapper : ISocket
{
// read and write methods simply delegate work to real socket
}

public class ClassToTest
{
private ISocket socket;

public ClassToTest(ISocket socket)
{
this.socket = socket;
}
}

现在,在单元测试中,您可以创建 ISocket 的模拟并将其传递给 ClassToTest 构造函数。这样,您就可以将单元测试与其依赖项隔离开来。

关于java - 最佳实践 : Unit testing a method that takes in a Socket as an argument?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10366957/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com