我想調試一個失敗的測試,有一個assertEquals
JUnit測試。在assertEquals
語句失敗後,我希望看到應用程序在一段時間內的行爲。現在,eClipse在語句失敗後立即停止測試。有沒有辦法在失敗後讓測試休眠一下?謝謝。不要停止測試assertEquals
回答
當你說「應用程序在一段時間內的行爲」時,你說的是在不同的(非測試)線程中的行爲,對吧?我想提取斷言條件到一個變量,將斷點實際斷言線,並在調試運行測試:
@Test
public void testSomeMethod() {
assertEquals(true, testInstance.someMethod());
}
成爲
@Test
public void testSomeMethod() {
boolean result = testInstance.someMethod();
/* breakpoint goes here */ assertEquals(true, result);
}
要做的最簡單的事情就是註釋掉該行。
一旦斷言失敗,單個測試就會失敗,原因是您如何信任第一次失敗後的任何結果?
你說
I'd like to see the behavior of the application for a certain amount of time after the assertEquals statement fails
我不明白這句話。你是否正在運行帶有junit聲明的應用程序,還是正在運行一套單元測試?另外,如果斷言失敗,爲什麼你想繼續?聽起來像你的測試設計需要更多的工作 - 斷言失敗意味着情況是一個失敗的時期。如果你想看看失敗後會發生什麼,那麼你應該在斷言中添加更多的細節,並且只有當你不想繼續時纔會失敗。
我有一種預感,我的測試失敗了,因爲一個變量的值在應該變化之前就已經改變了。我想看看測試未能進一步調查這件事後會發生什麼。 – jamesfzhang
然後只是註釋掉該行。您也可以使用調試器觀察值,以瞭解其更改的時間。 – hvgotcodes
另一個問題是測試只是有時會失敗。我感興趣的變量每5秒更改一次值,需要300-500ms。正如你可以想象的那樣,如果assert語句落在該差距的正確方面,它會通過,否則它會失敗。我不能使用調試器,因爲按下一個鍵去下一行太慢了。 – jamesfzhang
不是。在幕後,當斷言失敗時,JUnit框架會引發異常。 Eclipse捕獲這個異常並將給定的測試標記爲失敗。所以你問:是否可以抑制拋出異常並繼續執行?
JUnit不會幫你在這裏。你可以用你自己的包裝器代替JUnit斷言,它不會拋出異常(或者在測試結束時拋出)。當然,你也可以評論測試失敗。但是沒有內置的解決方案。
你是對的,assertXXX拋出一個AssertionError,但這被JUnit框架捕獲,Eclipse得到通知,因爲它有一個RunListener –
理想情況下,您的測試每次測試應該只有一個斷言,並且您的測試一次只能涵蓋一個特定的功能。
如果您有多個測試,那麼很可能您的其他資產在第一次失敗時失敗,因此在進行其他測試時沒有任何價值。
但是,如果你仍然想繼續做好,那麼你可以建立自己的斷言庫,在這裏你創建自己的apis並在某處存儲結果,然後打印出錯誤。不是太靠近Java所以不知道如何可以編碼。
一般來說,單元測試應該在他們中有一個單一的論斷;他們正在測試的一件事。除了斷言之外,有兩個測試的代碼完全相同,即「運行時,這兩個東西都應該是真的」是兩個測試,這並非不合理。
值得注意的是,如果您真的想要使用附加代碼(過去斷言)來幫助您確定測試失敗的原因,請考慮一直流行的printf調試。您可以在斷言之前向測試中添加一些輸出,以讓您知道事物的狀態。一旦測試正常,您可以隨時將其拉出。
assertEquals拋出一個AssertionError,因此您需要找到一種對該異常做出反應的方法。
您是IDE可能有能力在發生異常或錯誤時添加斷點。如果是,則爲AssertionError添加一個。
如果沒有,那麼你可以添加圍繞assertEquals的try catch,並在catch塊中添加一個斷點。
- 1. JMeter測試不停止
- 2. PHPUnit測試異常和AssertEquals
- 3. JUnit測試問題:: assertEquals()
- 4. 停止Android的工作室shell進程不會停止,測試
- 5. 停止按鈕不停止當前android單元測試
- 6. Django停止運行測試
- 7. 黃瓜測試停止
- 8. 停止Robotium測試執行
- 9. 測試失敗後,自動測試不會停止?
- 10. Selenium測試超時不停止測試的PHPUnit 3.6.10硒RC 2.19.0
- 11. 的JUnit測試 - 的assertEquals異常
- 12. 詹金斯不停止黃瓜測試當中止(按下停止[x]按鈕)
- 13. 在調試ava測試時,WebStorm不會停止在斷點處
- 14. 不要停止iPod音樂
- 15. 不要停止時-h
- 16. 如何停止Solr而不停止WebSphere Commerce測試服務器(IBM RAD)
- 17. 控制檯測試無誤地停止
- 18. 停止運行安裝失敗測試
- 19. 停止運行黃瓜測試功能
- 20. 從運行摩卡停止測試
- 21. 爲量角器測試停止ng2-idle
- 22. 特定故障後停止測試
- 23. xUnit:從代碼停止測試執行
- 24. RAILS:停止測試的緩存
- 25. Ruby on Rails測試停止工作
- 26. 計時器在想要停止時不停止,不想停止時Obj-C
- 27. 停止測試,如果JUnit測試失敗
- 28. 使用twisted.trial.unittest時測試站之間會停止測試
- 29. 測試框架如何停止運行測試的執行?
- 30. 如何在特定測試失敗時停止運行測試?
這個也是我所做的。 –