正如标题所说,考虑到您不想为每个特定测试启动/停止测试服务器,我对使用 Jetty Web 服务器测试应用程序的最佳方法感兴趣。
据我所知,这些是解决方案:
如果您使用 Maven 或 Gradle 之类的构建工具,则可以在
*.pom
or*.gradle
文件中执行此操作。- 这样做的缺点是您必须以与通常在应用程序中创建测试服务器不同的方式创建测试服务器。
创建一个测试套件并使用
@BeforeClass
和@AfterClass
注释在测试之前/之后启动/停止服务器Suite
。- 这里的缺点是指定要运行的测试的“丑陋”方式。您还必须指定添加到套件的测试,它不应该在套件之外运行(避免重复运行测试)。我认为 Junit 还没有完全做好这方面的准备。
在测试开始时以静态方式创建和启动服务器,并使用该
ShutDown
机制连接到 JVM 并在所有测试完成后自动停止服务器。这似乎是最好的解决方案,因为这种机制已经在 Jetty 中可用,但是- 缺点是您无法控制服务器的停止。它实际上是在一个完全不同的线程中完成的,甚至在构建工具之外(我为此使用 Gradle)