我会在Eclipse项目中添加一些JUnit测试,该项目将服务器上的功能测试到Eclipse Web项目。
我可以在外部Tomcat服务器(Run As
| Run on Server
)上从Eclipse内部运行Web应用程序,然后在Eclipse内部运行JUnit测试,而第一个仍在运行。
我理解应该可以通过使用在Eclipse内部运行并且可以启动的Jetty(而不是Tomcat)服务器来完全自动化两个步骤。在@BeforeClass
(或更早)。
Eclipse是否支持这种开箱即用的单元测试。我目前正在为Web开发人员使用Eclipse Java EE IDE(版本:Kepler Service Release 2)。
答案 0 :(得分:1)
Eclipse(以及任何其他IDE)不会阻止您在单元测试中做任何事情。它也不太支持,这是你的问题的核心:Eclipse不会为你的单元测试启动服务器。对于我所知道的所有其他IDE也是如此。
相反,您需要阅读如何embed Jetty in a Java application(=您的单元测试),以便第一个测试可以启动服务器。为此使用延迟初始化模式:
private static JettyManager jetty;
@Before public void startServer() {
if( null == jetty ) {
jetty = new JettyManager();
jetty.start();
}
}
您可以使用JVM关闭挂钩来彻底停止服务器。
我使用相同的模式来创建应该在测试期间使用的数据库,以确保它是干净的。为此,我embed an H2 database。
如果您想要更多自动化,请查看Maven。它可以运行集成测试(包括在开始测试之前部署WAR)。见http://www.benoitschweblin.com/2013/03/run-jetty-in-maven-life-cycle.html
使用Maven Cargo plugin,您可以部署到几乎每个J2EE容器。