【问题标题】:run Java Servlet unit tests on Tomcat server在 Tomcat 服务器上运行 Java Servlet 单元测试
【发布时间】:2019-12-12 12:32:32
【问题描述】:

我有一个 Java HttpServlet。当我们向这个 servlet 发送一个 get 请求时,它会检查服务器中的文件是否存在。如果不创建一个新文件。

我想写一些单元测试。当 get 请求发送时,断言新文件已创建。 我的问题是我在本地机器上运行的测试,而不是在本地服务器中创建的 Tomcat 服务器和临时文件。

这是我的代码:

    HttpGet httpGet = new HttpGet("localhost:8080/myfilename");
    HttpClient httpClient = HttpClientBuilder.create().build();
    httpClient.execute(httpGet);

    File directory = new File("myfilename");

    // then
    assertTrue(directory.exists());

如何在 tomcat 服务器上运行单元测试?

【问题讨论】:

标签: java unit-testing tomcat servlets


【解决方案1】:

明显的不回答:你不这样做。

长答案:unit 测试是关于在isolation 中测试units。为了有用,您可以模拟/存根任何外部的东西,例如:Web 或应用程序服务器。

换句话说:应该为您的服务器为特定 URL 调用的代码编写真正的单元测试。您可以编写一个体面的单元测试,以确保:“当我被调用时,我会检查该文件,如果没有,请创建它”。

然后你测试它,独立于任何 Tomcat 服务器。

然后,稍后,您可能想要测试您的端到端功能是否有效。但是,当然,您应该只使用 服务器 本身必须提供的 API。

【讨论】:

  • @MoRtEzATM 从不那么测试原教旨主义者的角度来看,您可以使用痛苦的(但仅限于)arquillian 来处理此类事情。与之相关的复杂性自然会将此类测试限制在最低限度。
  • @gurioso 当然。但重点是:人们应该真正知道所有这些术语的含义。当您不了解测试金字塔时,您必须先学习基础知识。否则很可能你工作中的任何东西......都没有多大意义;-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-16
  • 2018-08-29
  • 2021-11-10
  • 1970-01-01
  • 2010-09-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多