【发布时间】:2015-02-12 17:06:36
【问题描述】:
我刚刚阅读了 DropWizard 的测试文档,并且爱上了它内置的 Integrated Testing capabilities。 TL;DR:它允许您的 JUnit 测试启动 Jetty 的内存实例,并基本上为您的 API 端点(资源方法)提供服务,因为它们将在野外存在。这使您可以使用客户端(针对localhost)实际访问您的 API 端点,并查看它们的操作/执行方式。太棒了!
我想知道是否可以使用这个DropWizardAppRule(或类似的东西)来启动/关闭我的 DropWizard 应用程序并验证没有抛出异常(烟雾测试);和
冒烟测试会很有用,因为可能有一些与初始化相关的异常会阻止应用启动(错误的配置文件等),很高兴知道这一点提前。同样,关闭时的冒烟测试也很有帮助,因为我们可能有一些东西没有正常关闭/拆除,并且可能有一个不会死的挂起线程,等等。
对正在运行的内存服务器进行压力测试并查看它在哪里推送(可能抛出 OOME?)也会很好。
所以,给定以下代码sn-p:
public class IntegrationTest {
@ClassRule
public static final DropwizardAppRule<TestConfiguration> RULE =
new DropwizardAppRule<TestConfiguration>(MyApp.class, resourceFilePath("my-app-config.yaml"));
@Test
public void shouldStartWithNoExceptions() {
// ???
}
@Test
public void stressTest10kUsers() {
// What exceptions could I check for to see if the server pushed over after
// 10,000 random endpoints were hit?
}
@Test
public void shouldShutdownGracefully() {
// ???
}
}
我问:
- 如何在不抛出异常的情况下测试服务器启动?
- 如何测试服务器是否仍在响应并且没有死机(由于压力测试)?
- 如何关闭服务器并确保没有引发异常或没有任何东西妨碍正常关闭?
【问题讨论】:
标签: java jersey jetty integration-testing dropwizard