2016-08-19 76 views
3

我想解決的問題之一unit tests失敗只有當我運行所有在項目中的測試。如何僅在某些特定單元測試運行時命中斷點?

因此,我只想在我的失敗測試執行時進入一些公共代碼。我試圖找出如何在Intellij IDEA中實現它,因爲有條件斷點的功能,但現在我失敗了,因爲不明白我如何寫這種類型的條件加上看起來其他可能性並不真的允許這個。

可能嗎?

+0

你想在某個測試中碰到一個斷點,當你只運行該測試時?在更具體的問題是你問如何運行一個選定的測試,而不一次運行?我很難得到你。 –

+0

不,我想在特定的單元測試之外打中斷點,但是當我運行所有測試並執行特定的單元測試時,會在一些常見代碼中出現。 – Rufi

回答

4

在失敗的測試案例中放置一個斷點(在圖像的第28行)。在公共代碼中放置另一個斷點(在圖中它的第42行),並將其作爲一個有條件的斷點,直到測試用例中的斷點被打中爲止。要獲得該窗口,請右鍵單擊斷點(有時您必須禁用然後重新啓用掛起複選框)。

希望它有幫助!

conditional break point

+0

是的,看起來這正是我正在尋找的!謝謝! – Rufi

2

我不知道一個想法功能,它可以讓你做到這一點的,但也有,你可以拿去做這種類型的調試一些手動步驟:

  1. 添加斷點到第一單元測試失敗的一行。
  2. 當這個斷點命中,在你感興趣的普通類添加另一個斷點。

或者,您也可以通過進行一些小的修改,以你的單元測試代碼更自動化的,可重複的方式做到這一點。

  1. 將公共靜態布爾值字段添加到您的默認設置爲false的單元測試類中。
  2. 在失敗測試的第一行中將此設置爲true
  3. 在測試條件中使用此字段。例如如果你的單元測試是「ThingTest」和你的領域「最低」 - 你的條件將是「ThingTest.footest == true」
  4. 在失敗測試結束時將其設置爲false(如果您希望後續測試正常運行)
+0

第一種選擇是明確的,是的,我試過了,但因爲測試失敗了,我試了很多次,感到很累,決定用另一種方法檢查是否可能。布爾變量聽起來有趣。 – Rufi

1

如何聲明一個布爾值,將其設置爲false默認情況下,只有將其設置爲true,當你測試失敗。

然後,您可以在您的斷點上設置一個條件,以便僅在布爾值設置爲true時才能觀察。

在IntelliJ中,按照常規添加斷點,然後右鍵單擊它,然後選擇查看斷點。另一個窗口打開,你可以輸入你的條件。 希望這有助於。

+0

從我的觀點來看,@Harry Harrison早些時候也提到過這個問題。 – Rufi

+1

沒問題,我們可能一直在打字。 – Harriet

0

你有兩個選擇:

  • 你可以像你說的,如果有在公共代碼中的一些狀態(值)使用條件斷點,特定於您要檢查測試。例如一個特定的字符串參數。
  • 您可以在測試中將額外的斷點放入您試圖在從此測試中調用通用代碼之前檢查 的測試中。一旦這個斷點 被擊中,你激活原始斷點。您可以手動或使用選項「禁用,直到選擇斷點 打」在斷點的斷點對話框通過 在組合框中選擇你額外斷點做到這一點 。如果您使用 「自動」 - 您甚至可以取消選中「暫停」爲額外 斷點。這樣它只會暫停/暫停您的原始斷點。
相關問題