0

私は自分のプロジェクトHTTP THREADPOOLED WEB SERVERの単体テストを書いています。そのために、私はMavenでJunitを使用しています。

そんな中、一か所にとどまり、疑問は次のとおりです。

  1. WebServerという名前のクラスが 1 つあります。このクラスのタスクは、サーバーを起動し、スレッドプールを作成し、ポートでクライアント要求のリッスンを開始することです。Annotation の下の Test クラスで同じスレッドを作成すると@BeforeClass、 client request を待機することが期待されますが、テストが完了したことが示されます。

    パブリック クラス 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

webserverStarter() が実際にサーバーを起動していることが確実であれば、サーバーが動作することに疑いの余地はありません。注釈 @BeforeClass について心配する必要はありません。一度だけ呼び出されることを意味するだけで、同じことが @AfterClass にも当てはまります。

私が疑うのは、サーバーが実際に起動していて、それについて確信がある場合、サーバーが正常に起動した直後またはテストケースが正常に終了した後にシャットダウンした可能性があるということです。このようにサーバーに継続的に実行するように指示する必要がある組み込み Tomcat サーバーを使用しています。

tomcat.start();     
tomcat.getServer().await();
于 2013-05-13T09:22:59.867 に答える
0

@Before は、すべてのテストの前に実行されます。単一の Web サーバーを使用する場合は、オブジェクトを作成するだけです。

于 2013-05-13T09:15:58.860 に答える