Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 出于测试目的,Thread.sleep是模拟HTTP请求的好方法吗?_Java_Multithreading - Fatal编程技术网

Java 出于测试目的,Thread.sleep是模拟HTTP请求的好方法吗?

Java 出于测试目的,Thread.sleep是模拟HTTP请求的好方法吗?,java,multithreading,Java,Multithreading,我有一个严重依赖网络IO请求的系统。我想做一个可靠的性能测试。一种天真的方法是让线程休眠一段时间 我的问题是,我让一个线程休眠的事实是否等于一个线程在HTTP请求上被阻塞 我问这件事的时候是从一个角度考虑的。从理论上讲,如果HTTP请求需要一个常量和已知的时间量,这是否等于Thread.sleep 换句话说,测试结果是否相同?(当然,在某种程度上,因为日程安排被认为是不确定的)这里不太清楚您要测试什么 一般来说,在测试中使用Thread.sleep()不是一种好的做法 如果您正在测试应用程序,那

我有一个严重依赖网络IO请求的系统。我想做一个可靠的性能测试。一种天真的方法是让线程休眠一段时间

我的问题是,我让一个线程休眠的事实是否等于一个线程在HTTP请求上被阻塞

我问这件事的时候是从一个角度考虑的。从理论上讲,如果HTTP请求需要一个常量和已知的时间量,这是否等于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想要编写单元测试,那么设计应用程序,使测试能够通过向前撞击一些模拟时钟来模拟时间的流逝,而不是实际将测试延迟那么长的时间,这是非常可取的。