合肥建设局网站官网,网上写文章用什么软件,asp网站优缺点,上海seo推广外包测试与远程服务交互的代码通常很困难。 有很多折衷因素会影响您可以编写哪些测试以及要编写的测试数量。 在大多数情况下#xff0c;您对从服务中获取的数据的控制为零#xff0c;这使得断言至少很难说。 不久前#xff0c;我使用VCR库针对远程服务编写了一些Ruby测试。 VC… 测试与远程服务交互的代码通常很困难。 有很多折衷因素会影响您可以编写哪些测试以及要编写的测试数量。 在大多数情况下您对从服务中获取的数据的控制为零这使得断言至少很难说。 不久前我使用VCR库针对远程服务编写了一些Ruby测试。 VCR解决了上述问题。 它记录了测试套件的HTTP交互以便在以后的运行中重播它们。 快速和可重复的测试是显而易见的好处。 这个星期我想知道Java是否也是如此。 事实证明有Betamax可以做到这一点。 实际上Betamax是VCR的Groovy端口可以与任何JVM语言一起使用。 Betamax在您和目标主机之间安装代理在tape上记录每个请求和响应并为已知请求重放tape 。 它适用于任何遵守Java代理设置的HTTP客户端也适用于诸如Apache HttpClient和WSLite之类的不兼容的客户端。 例 在JUnit测试中可以将Betamax用作方法级别的TestRule 。 在应该记录和重放的每个测试方法上您都放置了Betamax记录器并设置了磁带。 请考虑以下示例在该示例中我使用Spotify Metadata API来获得艺术家的欢迎。 在此示例中我使用Apache HttpClient库并将其配置为Betamax。 public class SpotifyTest {Rule public final Recorder recorder new Recorder();private final DefaultHttpClient http new DefaultHttpClient();Betamax(tape fixtures/popularity)Testpublic void get_popularity() throws Exception {Spotify spotify new Spotify(http);assertThat(spotify.popularity(The Beatles), is(.55f));}Beforepublic void setUp() throws Exception {BetamaxRoutePlanner.configure(http);}
} 在编写此代码时甲壳虫乐队的流行度为.55但由于此数字是基于用户的意见因此很有可能会发生变化。 使用Betamax磁带将获得相同的响应只要请求不发生更改并允许声明0.55以使其受欢迎。 HTTPS 正如我向您展示的那样Betamax使用代理或包装器类正确记录并重放任何HTTP通信如示例中所示。 还支持HTTPS但是当您在基于代理的设置中使用Betamax时HTTPS可能会更有趣。 使用包装器就可以了。 HTTPS和基于代理的设置的问题显然是代理无法在标准HTTPS通信中拦截数据。 这就是为什么我们信任HTTPS。 Betamax可以解决这个问题。 您可以在Betamax Recorder上启用sslSupport 。 如果您的客户端代码可以使用SSL证书链断开了则可以进行此操作。 同样当您使用基于代理的设置时这实际上只是一个问题。 使用客户端包装程序可以直接在API调用上启用Betamax从而简化HTTPS通信。 自己尝试 Betamax可以帮助您为远程服务的客户端编写快速且可重复的单元测试。 对我最有益的是由于消除了远程通信因此测试速度非常快。 虽然我个人比较喜欢这些测试的基于属性的样式例如流行度必须是 0和 5的数字但声明特定的值可能会有所帮助。 下次您与远程服务进行交互时请尝试使用Betamax。 参考来自Software Craft博客的JCG合作伙伴 Bart Bakker的快速远程服务测试 。 翻译自: https://www.javacodegeeks.com/2014/03/fast-remote-service-tests.html