我想調試一個失敗的測試,有一個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. JUnit測試問題:: assertEquals()
- 3. 黃瓜測試停止
- 4. Django停止運行測試
- 5. Selenium測試超時不停止測試的PHPUnit 3.6.10硒RC 2.19.0
- 6. 的JUnit測試 - 的assertEquals異常
- 7. 詹金斯不停止黃瓜測試當中止(按下停止[x]按鈕)
- 8. 在調試ava測試時,WebStorm不會停止在斷點處
- 9. 停止運行安裝失敗測試
- 10. RAILS:停止測試的緩存
- 11. 特定故障後停止測試
- 12. xUnit:從代碼停止測試執行
- 13. 停止運行黃瓜測試功能
- 14. 單元測試DAL - 停止運行單元測試時連接
- 15. 如何在* n *失敗測試後停止MsTest測試執行
- 16. 停止測試,如果JUnit測試失敗
- 17. 測試框架如何停止運行測試的執行?
- 18. 如果測試失敗,停止FlexUnit測試運行?
- 19. 集成測試在Stripe上創建測試用戶,如何停止或停用
- 20. jenkins管道運行後單元測試karma腳本不停止
- 21. Visual Studio 2010調試器不要停止在斷點?
- 22. 停止CaptureCallback要求
- 23. MSTest在2010年停止在測試項目之外的調試測試
- 24. 如何停止Msunit測試以停止控制檯日誌記錄
- 25. 單元測試是否必須有一個聲明像「assertEquals(..)」
- 26. JUnit測試assertEquals()和Assert.assertEquals()之間的區別
- 27. Mockito verifyNoMoreInteractions()使用assertEquals()時失敗的測試失敗()
- 28. 是否有AssertEquals用於測試XML文件?
- 29. 谷歌App Engine的單元測試:困難的assertEquals
- 30. Java:測試包括「新行」與assertEquals系統輸出
這個也是我所做的。 –