2011-06-04 135 views
5

我想用JUnit測試我的REST服務器。每個測試都會向服務器發送HTTP請求,並根據預期在響應中出現的元素列表來檢查響應。JUnit測試服務器

因此,在測試過程如下所示:

 
for each request in test requests 
    send request and receive response 
    assert the response is ok 
    for each element in the expected elements 
     test if the element exists in the response

你將如何與JUnit實現它?

回答

6

我會在您的JUnit類中使用@BeforeClass方法來獲取最新版本的服務器並啓動它(選擇適當的端口等)。同樣可以使用@AfterClass以編程方式關閉服務器。自動執行此操作非常重要,否則您必須記住要讓服務器的最新版本持續運行。

我假定測試不會更改服務器中的任何數據。如果他們這樣做,那麼你應該使用@Before@After,但請記住,這將導致你的服務器啓動/停止每個測試,並可能使測試花費不合理的時間過長。

一旦你有了這個框架,編寫測試本身應該很簡單。

您也可以通過確保您的RESTful API僅作爲普通的Java API公開,將其作爲一個「適當的」單元測試來編寫,這與純粹的網絡層隔離。這將運行得更快,並且(希望如果您的網絡層足夠薄)可以獲得大部分相同的可能錯誤。

+2

只是更加挑剔:OP當然沒有提到他想要做的是*「單元測試」*。他只是提到JUnit可以用於單元測試和其他類型的測試:) – SyntaxT3rr0r 2011-06-04 21:00:26

+1

好點,我已經擺脫了 – 2011-06-05 05:23:28