Unit testing 用于测试目的的假http服务器

Unit testing 用于测试目的的假http服务器,unit-testing,http,testing,ip-camera,Unit Testing,Http,Testing,Ip Camera,我有一个连接到IP摄像头的应用程序,可以通过HTTP请求获取图像和M-JPEG。现在还可以,因为我的相机在显影室。但几周后,该摄像头将投入生产(它们是非常昂贵的摄像头),因此我不会让它们用于测试和调试我的应用程序 我想知道的是,“模仿”这些摄像头的最佳方式是什么?目前,我的应用程序使用2个摄像头,假设它们处于打开和关闭状态。我曾想到: 在我的应用程序中,我可以封装执行以下操作的函数 类中的http调用,该类在 调试时释放并伪造。坏的一面是它会 不复制像偶尔超时和网络之类的真实内容 交通 也许有一

我有一个连接到IP摄像头的应用程序,可以通过HTTP请求获取图像和M-JPEG。现在还可以,因为我的相机在显影室。但几周后,该摄像头将投入生产(它们是非常昂贵的摄像头),因此我不会让它们用于测试和调试我的应用程序

我想知道的是,“模仿”这些摄像头的最佳方式是什么?目前,我的应用程序使用2个摄像头,假设它们处于打开和关闭状态。我曾想到:

  • 在我的应用程序中,我可以封装执行以下操作的函数 类中的http调用,该类在 调试时释放并伪造。坏的一面是它会 不复制像偶尔超时和网络之类的真实内容 交通
  • 也许有一个ip cam模拟器可以放在我的电脑上 网络和使用
  • 可能会创建一个真正的http请求到我将拥有的真正的服务器 编程返回假图片?如果是,如何处理
  • 正如你所看到的,我有一些想法,但我不确定什么是最好的,以及人们在做什么。考虑到您的回答,我可能会在相机不在时将其用于单元测试和正常调试


    谢谢

    广告1:在进行单元测试时,这是一种很好的方法-您的代码不应该依赖于外部服务器/设备/文件系统。但您已经看到,这种环境可能过于理想化了。然而,我的目标是将HTTP基础设施代码外部化——这将提高您的测试能力和总体架构

    广告2:没听说过这样的,对不起

    广告3:我认为这是最可行的解决方案。如果您曾经使用过servlet,只需抓取Tomcat或Jetty并编写一个即可。然后在
    localhost:8080/war\u name/servlet\u name
    下连接到您的servlet,并从中返回您想要的任何内容。这是一个非常简单的例子


    如果您从未听说过Javaservlet和servlet容器,那么仍然值得了解它们。但是,启动内置在Sun JDK中的HTTP服务器可能会更快,请参阅API和。

    如果您想要真实的图像并能够访问网络摄像头,您可以在解决方案中创建一个ASP.Net网络服务,根据请求从网络摄像头中拍照。 在调试模式下,将解决方案配置为在asp.net Development server上启动web服务,这样就不必配置“真正的”web服务器

    下面是一个链接,指向从c获取快照的代码# 它是针对winforms的,但应该适用于web服务

    我建议使用创建一个简单的测试线束。Sinatra非常简单,可以用来删除任何类似这样的基本web应用程序

    例如,这里有一个使用Sinatra编写的真实程序:

    require 'sinatra'
    
    get '/hi' do
      "Hello World!"
    end
    
    这将运行一个简单的web侦听器,它将响应
    helloworld如果您点击URI
    /hi


    Sinatra是一款基于Ruby的应用程序,如果你了解Ruby,那就最好了。如果您不喜欢或对另一种语言有强烈的偏好,请列出25种以上以各种其他语言编写的类似应用程序,因此您可能可以使用一个选项。

    使用python内置http服务器

    # sudo python -m http.server 80
    Serving HTTP on 0.0.0.0 port 80 ...
    123.123.12.1 - - [12/Feb/2018 11:34:02] "GET / HTTP/1.1" 200 -
    

    好主意。我想我会把这个想法和Tomasz给出的一般解释结合起来,来创建我的解决方案。感谢用户的建议,我终于用HTTP处理程序(.ashx)在.net解决方案中创建了一个网站。它真的很好用!