【问题标题】:Test deployment of a servlet测试 servlet 的部署
【发布时间】:2023-04-08 04:26:01
【问题描述】:

我正在开发一个以 war 格式发布的 servlet(包含 Jersey REST 服务器)。我编写了大量的单元测试来彻底测试代码库。但是,我经常遇到战争没有正确开始的问题。

这主要是因为我在web.xml 文件中犯了某种错误。例如,我重命名了 xml 中提到的某些类,而没有更改 xml 本身中的相应​​行。问题是,在我的测试中,我创建了一个 debug Application,因此从不考虑 xml。更重要的是,假设我有以下(球衣)ResourceConfig

import org.glassfish.jersey.server.ResourceConfig;

public class MyConfig extends ResourceConfig {
  public MyConfig() {
    register(...);
  }
}

现在假设我在web.xml 中有一个错误:

<init-param>
  <param-name>javax.ws.rs.Application</param-name>
  <param-value>MyMisspelledConfig</param-value>
</init-param>

我的单元测试如下所示:

public class ServerTest extends JerseyTest {

    @Override
    protected Application configure() {
        return new MyConfig();
    }

    @Test
    public void test() {
      //...
    }

}

测试通过,但部署的 servlet 甚至无法启动...

有没有办法自动测试默认部署(包括web.xml)?

【问题讨论】:

  • 您能否向我们展示一些代码,以便为您的问题提供更好的背景信息?

标签: java unit-testing servlets


【解决方案1】:

我知道测试 部署描述符 web.xml 的唯一方法是将战争部署在开发者机器上的本地服务器上(tomcat 或 jetty 是不错的选择)。 Netbeans 或 Eclipse 提供了很好的集成,打开一个浏览器窗口到 Web 应用程序的根目录。

然后您可以手动查看一些页面,或者如果您更喜欢自动化测试,您可以使用出色的Selenium 播放一些记录的场景来控制接收页面的部分。

【讨论】:

  • 好吧,我可以使用一些 bash 脚本来创建一个 war 包,部署它,启动服务器并执行一些测试。但我希望这能以类似 Junit 的方式实现。
  • 您可能不得不查看其他 post from SO,它表明 maven 可以自动化构建和 Selenium 测试作为集成测试。
猜你喜欢
  • 2012-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-19
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多