3

grizzly2でジャージテストを使用して、モックされたRESTリソースに対して受け入れテストを実行します。私のウィンドウズマシンでは、すべてがうまくいっています。しかし、彼のMacを使用している別の開発者は、Jenkins(Linux上)と同じエラーを受け取ります。

INFO: Creating Grizzly2 Web Container configured at the base URI http://localhost:9998/
02.08.2012 09:46:36 org.glassfish.grizzly.http.server.HttpServer start
SEVERE: Failed to start listener [NetworkListener{name='grizzly', host='localhost', port=9998, secure=false}] : java.net.BindException: Address already in use

明らかに、これが当てはまらないことを確認しました。他のプロセスは9998を使用していません。

私は問題を単一のテストまで追跡してきました。つまり、@TransactionalをJerseyTestの拡張と組み合わせて使用​​しています。

@ContextConfiguration({ "classpath:context-test.xml" })
@RunWith(SpringJUnit4ClassRunner.class)
@Transactional
@TransactionConfiguration(defaultRollback = true)
public class TestPage extends JerseyTest {

    public TestPage() throws Exception {
        super("", "", "path.to.package");
    }

    // init database to be rolled back after test
    // ...

    // test that calls a controller requiring database access and then sends a request to a mock REST resource.
    // ...
}

したがって、ここでの質問は次のとおりです。なぜWindowsではないのですか?そして、@Transactionalを使用することの何が問題になっていますか。

edit2 @Transactionalがプロキシを作成しているようですが、これは問題になる可能性があります。こちらをご覧ください

4

1 に答える 1

0

同様の問題が発生しました。TestPage テストで、tearDown() メソッドをオーバーライドしていないことを確認してください。破棄するものがある場合は、別のメソッド customTearDown() を使用して実行し、@After で注釈を付けます。

JerseyTest も同じメソッド名の tearDown() を使用し、それをオーバーライドしてもコンテナーがシャットダウンされることはありません。

于 2013-08-10T00:08:13.117 に答える