正如標題所說,我對使用Jetty Web服務器測試應用程序的最佳方法感興趣,並考慮到您不想爲每個特定測試啓動/停止測試服務器。使用Web服務器運行集成測試的最佳方式是什麼?
據我所知,這些都是解決方案:
,如果你使用像Maven的或搖籃構建工具,你可以在
*.pom
或*.gradle
文件做到這一點。- 這樣做的缺點是您必須以不同的方式創建測試服務器,而您通常在應用程序中執行此操作。
創建一個測試套件,並使用
@BeforeClass
和@AfterClass
註釋啓動/停止前/服務器測試Suite
後。- 缺點在於指定測試運行的「醜陋」方式。您還必須指定添加到套件的測試,它不應該在套件外運行(避免重複運行測試)。我認爲Junit還沒有完全配備這個。
創建,並在試驗開始啓動服務器以靜態方式,並使用
ShutDown
機制在JVM掛鉤,當所有的測試完成後自動停止服務器。這似乎是最好的解決方案,因爲這種機制已經在Jetty中可用,但是- 缺點是您無法控制服務器的停止。它是在一個完全不同的線程實際完成的,即使外面的建築工具的(我用搖籃本)
如何指定在一個套件運行測試?使用套件上的'@ SuiteClasses'註釋還是動態方法?此外,當您從IDE運行junit測試時,除了套件外,實際測試還將再次運行。你如何忽略實際測試,以便不再運行?感謝你的回答! – Mircea
在jetty中,我們的測試只需使用@Test進行註釋,並遵循FooTest.class的命名約定,然後使用maven surefire插件在正常構建期間運行它們。在像eclipse這樣的IDE中,你可以運行單獨的測試,或者你可以運行測試目錄。如果你有測試運行兩次,我會說這是IDE本身的配置問題,而不是任何事情。 –
可能是因爲我不夠明確。當我說Suite時,我指的是'org.junit.runners.Suite'。如果你創建一個測試與此批註,則您必須指定'org.junit.runners.Suite.SuiteClasses'註釋,其中包括要添加到'org.junit.runners.Suite'的測試類。只要指定的測試類只是正常的junit4測試類,即使它們是從maven運行的,它們也會運行。 Maven不知道這些測試類是在'org.junit.runners.Suite'註釋中定義的,並且也將由那個junit運行器運行。 – Mircea