我正在编写我的项目 HTTP THREADPOOLED WEB SERVER 的单元测试。为此,我在 Maven 中使用 Junit 。
当我在一个地方停留时,意思是如下,
有一个名为 WebServer 的类,其任务是启动服务器,创建线程池,并开始侦听端口以获取客户端请求。当我为相同的线程创建一个线程时,在注释@BeforeClass
下的Test类中,它应该等待客户端请求,但它会显示Test完成。
公共类WebServerTest {
@BeforeClass
public static void webserverStarter() {
System.out.println("Before Class : webserverStarter");
new Thread(new WebServer()).start();
}
@AfterClass
public static void webserverCleanup() {
System.out.println("After Class : webserverStarter");
}
}
我不明白为什么这不等待客户请求。请帮我编写用于测试HTTP Threadpooled WebServer的单元测试。
答案 0 :(得分:0)
@Before在每次测试之前执行。如果您想使用一个Web服务器,只需创建一个对象!
答案 1 :(得分:0)
如果您确定webserverStarter()实际上正在启动服务器,那么毫无疑问服务器将会正常工作。不要担心注释@BeforeClass。它只意味着它只被调用一次,同样的东西适用于@AfterClass。
我怀疑的是,如果您的服务器实际启动了,并且您确定它,可能是服务器在成功启动后或测试用例成功结束后立即关闭。在使用嵌入式Tomcat服务器时,我必须让我的服务器像这样连续运行。
tomcat.start();
tomcat.getServer().await();