为什么WebServer项目的单元测试显示出奇怪的行为?

时间:2013-05-13 09:10:03

标签: multithreading unit-testing maven junit webserver

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

当我在一个地方停留时,意思是如下,

  1. 有一个名为 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");
    }
    

    }

  2. 我不明白为什么这不等待客户请求。请帮我编写用于测试HTTP Threadpooled WebServer的单元测试。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

tomcat.start();     
tomcat.getServer().await();