gpt4 book ai didi

java - 是否可以有一个 "in-process"Tomcat 实例,用于测试目的?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:12:07 25 4
gpt4 key购买 nike

我有一个基于 Maven 的 Web 应用程序项目,它生成一个要在 Tomcat 中运行的 WAR。让我们假设,为了论证,该项目的单元测试通过网络实际发送/接收请求(而不是简单地使用模拟请求调用 servlet 方法)至关重要。

有什么方法可以让我的测试工具在同一个 JVM 中运行 Tomcat 实例,加载当前项目,并让测试用例在 localhost 上命中它?如果做不到这一点,我实际上如何以编程方式将当前项目(以及依赖项)打包到 WAR 中,以便我可以使用 Cargo 以编程方式将其上传到其他 Tomcat 实例?有没有比直接使用 mvn 更好的选择?

我知道我的要求不寻常,单元测试应该更加独立等等,但请让我们一起玩吧:)

最佳答案

您可以使用 embedded Tomcat正是为了这个目的。只需在您的测试工具中设置一个静态实例,然后在最后关闭它。下面是一些示例代码:

import org.apache.catalina.LifecycleException;
import org.apache.catalina.startup.Tomcat;
import org.junit.AfterClass;
import org.junit.BeforeClass;

public class TomcatIntegrationTest {
private static Tomcat t;
private static final int TOMCAT_PORT = 9999;

@BeforeClass
public static void setUp() throws LifecycleException {
t = new Tomcat();
t.setBaseDir(".");
t.setPort(TOMCAT_PORT);
/* There needs to be a symlink to the current dir named 'webapps' */
t.addWebapp("/service", "src/main/webapp");
t.init();
t.start();
}

@AfterClass
public static void shutDownTomcat() throws LifecycleException {
t.stop();
}
}

关于java - 是否可以有一个 "in-process"Tomcat 实例,用于测试目的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13409797/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com