在Tomcat服务器上运行Javaservlet单元测试

在Tomcat服务器上运行Javaservlet单元测试,java,unit-testing,tomcat,servlets,Java,Unit Testing,Tomcat,Servlets,我有一个JavaHttpServlet。当我们向这个servlet发送get请求时,它会检查服务器中是否存在文件。如果没有,请创建一个新文件 我想写一些单元测试。当get请求发送时,断言新文件已创建。 我的问题是在本地机器上运行的测试,而不是在本地服务器上创建的Tomcat服务器和临时文件 这是我的密码: HttpGet httpGet = new HttpGet("localhost:8080/myfilename"); HttpClient httpClient = Http

我有一个JavaHttpServlet。当我们向这个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服务器上运行单元测试

不同的非答案:你不会那样做的

详细回答:单元测试是关于在隔离中测试单元。为了有用,您可以模拟/存根任何外部对象,例如:web或应用程序服务器

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

然后独立于任何Tomcat服务器进行测试


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

@MoRtEzATM从一个不太受测试的原教旨主义者的角度来看,你可以用痛苦(但只能)来做这样的事情。这样做的复杂性自然会将此类测试限制在最低限度。但问题是:人们应该真正了解所有这些术语的含义。如果你不理解测试金字塔,那么你必须先学习基础知识。否则的话,你工作中的任何事情都有可能。。。没有多大意义;-)你可以得到,它独立于机器