Testing 测试微服务?
我知道这个问题有点主观,但我不知道该怎么办。目前,我正在使用Go+Go工具包编写一些微服务。我想以集成测试类型的方式测试这些微服务的端点,但我不确定如何进行。我唯一能想到的就是让shell脚本命中端点并检查响应。但这看起来像是胡涂,不是一个真正聪明的做法。我觉得应该有更好的办法。有人有什么建议吗?端到端测试的另一种方法是CDC 尽管进行一些端到端测试很有用,但它们也有一些缺点,如:Testing 测试微服务?,testing,go,integration-testing,microservices,Testing,Go,Integration Testing,Microservices,我知道这个问题有点主观,但我不知道该怎么办。目前,我正在使用Go+Go工具包编写一些微服务。我想以集成测试类型的方式测试这些微服务的端点,但我不确定如何进行。我唯一能想到的就是让shell脚本命中端点并检查响应。但这看起来像是胡涂,不是一个真正聪明的做法。我觉得应该有更好的办法。有人有什么建议吗?端到端测试的另一种方法是CDC 尽管进行一些端到端测试很有用,但它们也有一些缺点,如: 使用者服务必须知道如何启动提供者服务。这听起来像是不必要的信息,当服务数量开始增加时很难维护 启动服务可能很慢。
- 使用者服务必须知道如何启动提供者服务。这听起来像是不必要的信息,当服务数量开始增加时很难维护
- 启动服务可能很慢。即使我们只讨论几秒钟,这也会增加构建时间的开销。如果一个消费者依赖于多个服务,这一切都开始累积起来
- 提供者服务可能依赖于数据存储或其他服务来按预期工作。这意味着现在不仅需要启动提供商,还需要启动一些其他服务,可能是数据库
此信息取自。阅读更多关于这方面的内容,即使它是特定于Java的,它也会很有用。您可以使用包在标准的Go单元测试中完成这项工作。这允许您创建模拟
请求
和响应编写器
对象,这些对象可以传递给任何处理程序
或HandleFunc
。创建相应的请求
,将其传递给处理程序,然后从响应记录器
中读取响应,并对照预期响应进行检查
如果您使用默认的mux(调用
http.Handle()
来注册处理程序),您可以针对http.DefaultServeMux
进行测试。我过去在微服务中使用过它,效果很好。适用于基准测试处理程序、路由和中间件。您应该始终使用golang的本机测试每个单独的服务(请不要使用shell脚本!)。httptest看起来不错,但我认为拥有更细粒度的测试边界是很有帮助的——您的代码的每个功能块都应该有一个_test.go。较小的测试更容易维护
就涉及多个微服务的整体集成测试而言,您不应该在开发时进行这些测试。设置一个临时区域并在那里运行测试
我的2美分。这个问题似乎有点宽泛。看来你需要先去做一些研究,然后再提出一些具体的问题。这可能是一个好的开始。我不知道CDC将如何取代e2e测试,e2e通常包括UI,CDC会这样做吗?