我在Eclipse中編寫JUnit 3測試套件,我希望套件可以實現擴展行爲,如果它正在運行一堆附加套件,但是如果它正在單獨運行,則省略某些測試。 (明顯的例子:被測試的方法有一個註釋,其狀態字段在開發過程中將爲In_Progress
,但Complete
後綴。當方法被標記爲In_Progress
時拋出紅色標誌的測試將會是一種麻煩,當開發人員僅測試一個類,但在測試所有類時會非常方便,可以捕獲開發人員忘記改變已完成方法狀態的情況。另一個例子:有些測試套件可用於將相關測試收集到一個簡單易用的但是如果我們在整個軟件包中運行所有測試,那麼Eclipse套件中的測試將在Eclipse訪問他們的類時運行,並且不需要在這個相關測試套件中再次運行。所以當這個套件與其他套件一起運行時,它應該是空的。)JUnit 3套件如何知道它是單獨運行還是與其他套件一起運行?
因爲這些測試全部從一個公共基類繼承,我可以設置一個static boolean
,以便在初始化第二個和後續套件時知道。然而,第一個測試套件不知道其他套件是否會遵循它。
在Eclipse環境中是否有可以幫助檢測這種情況的東西?我已經嘗試將boolean
初始化置於我打算首先運行的空測試套件中,但在Eclipse中,套件不一定按字母順序運行。 (我們一起運行這些測試,方法是選擇包含它們的軟件包並選擇Run -> Run As -> JUnit Test
(或擊鍵或鼠標點擊以達到相同的效果)。)
回顧:第二個和後續套件可以檢測到它們處於一個多套房運行,但有一些方法的第一套房也可以弄清楚這一點嗎?或者,我可以以某種方式讓Eclipse始終按字母順序運行測試,即在所有其他測試之前選擇配置套件?
我認爲可能會有一些獨立運行的套件和套件作爲整個套件的一部分運行之間的區別。但是,堆棧跟蹤是無法區分的。 – 2012-02-16 19:06:19
我在Eclipse中查找JUnit測試運行器的源代碼,希望能夠在某些靜態變量中提示一些靜態變量,這些靜態變量可以使用Reflection進行挖掘和讀取。但是,它們寫得太乾淨了,關於有多少測試套件正在運行的每個提示都隱藏在實例中。 AFAIK,沒有辦法獲得我的調用堆棧中出現的實例。這個虛擬機應該只有一個'RemoteTestRunner'實例:我如何訪問它? – 2012-02-16 21:59:43