您如何看待下面的斷言?斷言中的邏輯運算符是否可接受?
Assert.IsTrue(condition1 && condition2);
我在審查會議期間想出了這種類型的斷言。據我所見,使用& &算子在斷言中不是一個好習慣。我想知道別人怎麼看?值得一提的是,在下一次審查會議中這是一個問題?或者這只是個人喜好?
您如何看待下面的斷言?斷言中的邏輯運算符是否可接受?
Assert.IsTrue(condition1 && condition2);
我在審查會議期間想出了這種類型的斷言。據我所見,使用& &算子在斷言中不是一個好習慣。我想知道別人怎麼看?值得一提的是,在下一次審查會議中這是一個問題?或者這只是個人喜好?
當你寫
Assert.IsTrue(condition1 && condition2);
然後,它目前還不清楚是什麼原因導致測試失敗的 - 第一個或第二個條件。因此,你需要他們兩人是true
只檢查一個接一個:
Assert.IsTrue(condition1);
Assert.IsTrue(condition2);
現在,讓我們覺得這有什麼錯OR條件:
Assert.IsTrue(condition1 || condition2);
這看起來像隨機測試 - 它會傳遞不同的方案:
所以,你正在檢查什麼情況到底如何?創建三種不同的情景來重現這三種情況。每個測試將包含兩個斷言,例如對於最後一個場景:
Assert.IsFalse(condition1);
Assert.IsTrue(condition2);
和錯誤信息,這正是我在審查會議上提到的。 – pappati
@pappati是的,與你同意。消息也很有用。順便說一句,我用OR條件更新了答案 –
我認爲你對'||'的確是正確的,我想不出任何我在答案中寫的東西。 –
這取決於上下文。
Assert.IsTrue(condition1 && condition2);
當然也由2個獨立Assert
s內更換但如何
Assert.IsTrue(condition1 || condition2);
當發生這種情況是有效的測試結果,然後我看到它沒有問題。
因此,當兩個條件邏輯相關時,請使用&&
。
當他們有2個或多或少的獨立結果時,使用2個Assert調用。
如果條件不相關的話,我會做兩個斷言。但是,你的技術是
Debug.Assert(str != null && str.Length == 10);
因爲當時不拋出非常有用,因爲
Debug.Assert(str != null);
Debug.Assert(str.Length == 10);
會的情況下斷言被違反。
在我看來,一個單元測試應該測試1,只有1件事。使用& &似乎與此相反。
如果有多個「概念」或關注的領域,那麼這是不理想的,並建議重構,以不同的測試,每一個概念。
另外,如果它只是一點鍛鍊邏輯,那麼很好。但是 - 提取這個邏輯來明確這是怎麼回事,而不是把它放在斷言中。
將測試分爲多個測試有意義嗎?
爲什麼你覺得這是不是一個好主意?你建議做什麼呢? – Servy
我覺得沒有錯...... –
當測試失敗時錯誤信息是否清除? – doctorlove