2015-04-21 43 views
-6

我在玩Visual Studio的單元測試。c#Assert.AreEqual not workng

想測試一個簡單的通話

Assert.AreEqual(2, 1, 2); 

當運行測試,它說通?它不應該失敗。

+0

是否有您不使用Assert.AreEqual(任何理由2 ,1)?指定三個數字可讓您指定檢查的準確性。 https://msdn.microsoft.com/en-us/library/microsoft.visualstudio.testtools.unittesting.assert.areequal.aspx –

回答

3

https://msdn.microsoft.com/en-us/library/ms243458.aspx

Assert.AreEqual(double, double, double)第三個參數指定要平等精確度。你的代碼要求「2在2之內」,這當然是。

+0

兩個附錄: 1.我真的鼓勵NUnit而不是內置的visual studio單元測試框架。 2.沒有內置的'Assert'擴展方法來測試一個任意的參數列表,但是很容易編寫一個(我有一個自制的小軟件包,有很多像Assert.AllEqual (),Assert.NoneEqual等)對其進行破解! –

+2

關於你的附錄:1.非常主觀。 MSTest對於大多數場景來說都非常好。如果你打算進行第三方測試框架,那麼你可能會採用xUnit.NET,它將在下一個VS中替代MSTest。 2.總是有[CollectionAssert](https://msdn.microsoft.com/en-us/library/microsoft.visualstudio.testtools.unittesting.collectionassert.aspx)。 –

+1

@JeroenVannevel也有http://www.fluentassertions.com/給你更可讀的'2.Should()。(1)'語句比'Assert.AreEqual(2,1)' –

5

要調用Assert.AreEqual Method (Double, Double, Double)double delta=2,2和1之間,的確差小於2

你可能想

Assert.AreEqual(2,1, "Expected {0}", 2); 
+0

我認爲這可以說是_better_的答案,因爲它不僅描述了原因,還顯示了_fix_。 +1 – MickyD