0

我正在编写我的项目HTTP THREADPOOLED WEB SERVER的单元测试。为此,我在Maven中使用Junit

同时我卡在一个地方,疑问如下,

  1. 有一个名为WebServer的类,其任务是启动服务器,创建线程池,并开始在端口上侦听客户端请求。当我为相同的线程创建一个线程时,在注释下的测试类中@BeforeClass,它应该等待客户端请求,但它显示测试完成。

    公共类 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 的单元测试。

4

2 回答 2

0

@Before 在每个测试之前执行。如果您想使用单个 Web 服务器,只需创建一个对象!

于 2013-05-13T09:15:58.860 回答
0

如果您确定 webserverStarter() 实际上正在启动服务器,那么毫无疑问该服务器将正常工作。不用担心@BeforeClass 注释。这只意味着它只会被调用一次,同样的事情适用于@AfterClass。

我怀疑的是,如果您的服务器实际上已启动,并且您对此很确定,则可能是服务器在成功启动或测试用例成功结束后立即关闭。在使用嵌入式 Tomcat 服务器时,我必须告诉我的服务器像这样连续运行。

tomcat.start();     
tomcat.getServer().await();
于 2013-05-13T09:22:59.867 回答