Java 出于测试目的,Thread.sleep是模拟HTTP请求的好方法吗?
我有一个严重依赖网络IO请求的系统。我想做一个可靠的性能测试。一种天真的方法是让线程休眠一段时间 我的问题是,我让一个线程休眠的事实是否等于一个线程在HTTP请求上被阻塞 我问这件事的时候是从一个角度考虑的。从理论上讲,如果HTTP请求需要一个常量和已知的时间量,这是否等于Thread.sleepJava 出于测试目的,Thread.sleep是模拟HTTP请求的好方法吗?,java,multithreading,Java,Multithreading,我有一个严重依赖网络IO请求的系统。我想做一个可靠的性能测试。一种天真的方法是让线程休眠一段时间 我的问题是,我让一个线程休眠的事实是否等于一个线程在HTTP请求上被阻塞 我问这件事的时候是从一个角度考虑的。从理论上讲,如果HTTP请求需要一个常量和已知的时间量,这是否等于Thread.sleep 换句话说,测试结果是否相同?(当然,在某种程度上,因为日程安排被认为是不确定的)这里不太清楚您要测试什么 一般来说,在测试中使用Thread.sleep()不是一种好的做法 如果您正在测试应用程序,那
换句话说,测试结果是否相同?(当然,在某种程度上,因为日程安排被认为是不确定的)这里不太清楚您要测试什么 一般来说,在测试中使用
Thread.sleep()
不是一种好的做法
如果您正在测试应用程序,那么应该使用模拟服务器模拟正在调用的另一个端点 现在还不清楚您要测试什么 一般来说,在测试中使用
Thread.sleep()
不是一种好的做法
如果您正在测试应用程序,那么应该使用模拟服务器模拟正在调用的另一个端点 使用线程睡眠来模拟http调用是一种不好的做法。使用真正的http调用要好得多。如果无法向远程服务发送真正的http请求,则可以使用wiremock模拟这些服务
使用线程睡眠来模拟http调用是一种不好的做法。使用真正的http调用要好得多。如果无法向远程服务发送真正的http请求,则可以使用wiremock模拟这些服务
这个问题感觉太模糊了。如果您只想模拟每个线程连接上的延迟,那么它可以工作。如果您希望尽可能接近实际的HTTP请求,这意味着您还希望模拟绑定的连接、带宽、波动、长时间运行的请求、恶意请求等,这可能不太好。是的,我的主要目标是模拟延迟本身。然后是的,使用
Thread.sleep
似乎是一个合适的替代品,如果线程会阻塞另一个读取的套接字,那么这个问题感觉太模糊了。如果您只想模拟每个线程连接上的延迟,那么它可以工作。如果您希望尽可能接近实际的HTTP请求,这意味着您还希望模拟绑定的连接、带宽、波动、长时间运行的请求、恶意请求等,这可能不太好。是的,我的主要目标是模拟延迟本身。然后是的,使用Thread.sleep
似乎是一个合适的替代方法,如果线程会阻塞另一个读取的套接字,那么如果OP正在编写性能测试而不是单元测试,您的建议是否也适用?如果OP正在编写性能测试而不是单元测试,您的建议是否也适用?这取决于上下文:如果OP只是想要从命令行运行一个实验,那么使用sleep()
模拟阻塞调用没有什么错。但是,如果OP想要编写单元测试,那么设计应用程序就变得非常理想,这样一个测试就可以模拟时间的流逝,方法是将模拟的时钟向前推,而不是实际地将测试延迟那么长的时间。这取决于上下文:如果OP只想从命令行运行一个实验,那么使用sleep()
模拟阻塞调用没有什么错。但是,如果OP想要编写单元测试,那么设计应用程序,使测试能够通过向前撞击一些模拟时钟来模拟时间的流逝,而不是实际将测试延迟那么长的时间,这是非常可取的。