我会将一些JUnit测试添加到Eclipse项目中,以测试服务器上的功能。
我可以在外部Tomcat服务器(Run As | Run on Server)上从Eclipse内部运行web应用程序,然后在第一个测试仍在运行的情况下也从Eclipse内部运行JUnit测试。
据我所知,应该可以通过使用运行在Eclipse中的Jetty (而不是Tomcat)服务器来完全自动化这两个步骤,该服务器可以在@BeforeClass (或更早的版本)中启动。
Eclipse是否支持这种开箱即用的单元测试。我目前正在为Web开发人员使用Eclipse Java EE IDE (版本: Kepler Service Release 2)。
发布于 2014-11-21 17:20:24
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容器。
或者使用Jenkins:http://programmaticponderings.wordpress.com/2013/11/13/building-a-deployment-pipeline-using-git-maven-jenkins-and-glassfish-part-2-of-2/
https://stackoverflow.com/questions/27057659
复制相似问题