11

現在、多数の単体テストを実行するためにサーバーを作成する必要があります。このプロセスを簡素化するために、Tomcat をコードに組み込み、(@BeforeClass 表記を使用して) 単体テストを実行する前に、Tomcat のインスタンスをロードし (次に、WAR ファイルをロードします) たいと考えています。

問題は、WAR ファイルを組み込みの Tomcat にデプロイする方法です。

お気づきかもしれませんが、Tomcat Maven プラグインは自動テストで実行したいので使用できません。

4

1 に答える 1

10

このコードは Tomcat 8.0 で動作します。

File catalinaHome = new File("..."); // folder must exist
Tomcat tomcat = new Tomcat();
tomcat.setPort(8080); // HTTP port
tomcat.setBaseDir(catalinaHome.getAbsolutePath());
tomcat.getServer().addLifecycleListener(new VersionLoggerListener()); // nice to have

2 つのオプションがあります。に任意の Web アプリを自動的に展開しますcatalinaHome/webapps

// This magic line makes Tomcat look for WAR files in catalinaHome/webapps
// and automatically deploy them
tomcat.getHost().addLifecycleListener(new HostConfig());

または、WAR アーカイブを手動で追加することもできます。注: ハードディスクのどこにでも置くことができます。

// Manually add WAR archives to deploy.
// This allows to define the order in which the apps are discovered
// plus the context path.
File war = new File(...);
tomcat.addWebapp("/contextPath", war.getAbsolutePath());
于 2015-12-03T12:20:14.047 に答える