是否有Java測試庫支持以下場景?JUnit:尋找@before方法和個人測試方法之間的通信路徑
假設您必須爲基於數據庫的Web應用程序(例如使用Selenium)編寫Web瀏覽器測試。一個典型的測試將具有以下流程:
- 插入測試數據,以DB
- 運行測試邏輯(打開網頁瀏覽器,瀏覽地方,操縱的東西,是否顯示正確的事情驗證,驗證如果DB狀態改變正確)
- 清除DB
尤其是在這種集成測試的情況下,你經常會需要一套複雜多樣的對象只是剛剛運行的Web應用程序(例如,您需要一個用戶帳戶,業務與產品相關的東西,oders,.. )。爲保持測試彼此獨立並且能夠並行運行測試,您希望爲每個測試創建此對象網絡,可能使用僞隨機對象屬性(如user.name="user_123"
)。
現在,在我看來,做好每個測試都要重複的事情的好地方,是一種註解方法。但是,如果@Before
方法插入DB狀態,測試方法將不知道如何訪問該狀態,例如,如何找到用戶對象創建的方法@Before
。最好有一種測試方法上下文,它由@Before
方法設置,並且可以被測試方法使用。
我想過自己實現這樣的東西,也許是一個簡單的靜態hashmap,測試方法名稱爲key,但可能已經有一個庫提供此功能並且您知道它;-)。
我不明白你的想法。你希望你的測試獨立並且平行地運行。每個測試前都會運行'@ Before'內的代碼。因此,只測試可以在'@ before'方法中創建的所有測試共用的數據。爲什麼你不能在測試方法本身內創建非常特定於個別測試的其他測試數據? – thiyaga
因爲即使_common_數據不是特定測試的對象,也可能受測試方法的影響。考慮用戶帳戶和兩項測試:1)一項測試(作爲副作用)導致用戶帳戶被停用,2)測試創建訂單。如果兩個測試都依賴於相同的用戶對象,則測試不會是獨立的,儘管用戶對象不是這些測試的主題。因此,我想擁有不同的用戶帳戶對象,但不希望在每個測試中重複創建(即使不是輔助方法)。這就是爲什麼我想使用@before方法 – rainer198