Java 通过InputStream和OutputStream模拟数据序列

Java 通过InputStream和OutputStream模拟数据序列,java,mocking,inputstream,outputstream,Java,Mocking,Inputstream,Outputstream,我设计了一个Java类来实现一些服务器协议。例如,它有getProtocolVersion()方法,返回最新的协议版本。此类的对象通过InputStream和OutputStream实现连接到服务器 我对每个服务器命令都有一个存根测试。每个测试都会使用预期的客户端请求和服务器响应创建ByteArrayInputStream和ByteArrayInputStream,这样我就可以使用JUnit对协议实现执行逻辑单元测试。这是可行的,但为每个命令测试创建夹具(准备数据)太无聊了 对我来说,真的要用嘲

我设计了一个Java类来实现一些服务器协议。例如,它有
getProtocolVersion()
方法,返回最新的协议版本。此类的对象通过
InputStream
OutputStream
实现连接到服务器

我对每个服务器命令都有一个存根测试。每个测试都会使用预期的客户端请求和服务器响应创建
ByteArrayInputStream
ByteArrayInputStream
,这样我就可以使用JUnit对协议实现执行逻辑单元测试。这是可行的,但为每个命令测试创建夹具(准备数据)太无聊了


对我来说,真的要用嘲弄吗?这个解决方案不那么复杂吗?如何通过输入和输出流模拟数据序列?

您可以将
封装在一个更易于创建和断言的对象中。这可以用于端到端测试


对于单元测试,您可以将逻辑提取到可独立测试的方法中,而无需设置复杂的夹具。

您可以将
封装到一个更易于创建和断言的对象中。这可以用于端到端测试


对于单元测试,您可以将逻辑提取到可独立测试的方法中,而无需设置复杂的夹具。

您所说的“在我的情况下真的要使用模拟吗?”是什么意思?序列是基于文本的<代码>新建ByteArrayInputStream(text.getBytes())Peter,我的序列包含原始字节和UTF-8编码字符串。Jon,我的意思是如何模拟InputStream和OutputStream实现(通过这些流的数据序列)。你所说的“在我的情况下真的要使用模拟吗?”是什么意思?序列是基于文本的吗<代码>新建ByteArrayInputStream(text.getBytes())Peter,我的序列包含原始字节和UTF-8编码字符串。Jon,我的意思是如何模拟InputStream和OutputStream实现(通过这些流的数据序列)。