在nunit測試中,我們可以斷言,如果測試在某種情況下失敗,那麼它就是合格(即預期會嘗試失敗)。斷言測試失敗是成功的
但它應該在所有其他情況下通過。
事情是,測試可能會崩潰之前,它可以達到它的斷言部分。
我的意思是在
[TestSetup]
void init()
{
if (condition==true)
{
Assert.That(this test fails); /*any feature to do this?*/
}
}
在nunit測試中,我們可以斷言,如果測試在某種情況下失敗,那麼它就是合格(即預期會嘗試失敗)。斷言測試失敗是成功的
但它應該在所有其他情況下通過。
事情是,測試可能會崩潰之前,它可以達到它的斷言部分。
我的意思是在
[TestSetup]
void init()
{
if (condition==true)
{
Assert.That(this test fails); /*any feature to do this?*/
}
}
線的東西如果測試會失敗,且它歸類爲在某些情況下的傳球,這聽起來不好的測試。用明確的方法名稱將其分解爲單個測試,詳細說明它的實現。
因此,不是有一個測試,並有一個條件在裏面,將它分成每個場景。這樣,你可以有一個場景,在這種情況下,它應該失敗,像
// do stuff
bool success = DoStuff();
Assert.IsFalse(success);
同意。雖然你的答案是沒有確切的一個我一直在尋找,我仍然覺得它比我所期待的更好。謝謝。 – dushyantp 2013-04-29 08:46:05
這有點難以理解你的問題。你是否想要Assert.Fail()
強制失敗?是這樣的...
[TestSetup]
public void Init()
{
if (condition==true)
{
Assert.Fail();
}
}
相反,如果你想檢查失敗,而不是原因一個,你應該遵循雅蘭的意見,並檢查你正在驗證開展工作的具體事實 - 如方法的返回值。
我一直在尋找像聲稱它失敗並不會導致失敗的事情。無論如何,我認爲我的行動計劃是基於一個搖搖欲墜的基礎和可能雅蘭的建議(查看以上的ANS)是最好的。謝謝。 – dushyantp 2013-04-29 08:47:31
您還可以使用「Action」對象調用操作中的代碼,並在該操作爲異常時測試該操作。看FluentAssertions他們有很多例子。
int number1 = 1;
int number0 = 0;
Action someAction =() => { int j = number1/number0; };
someAction.ShouldThrow<DivideByZeroException>();
我真的不明白。你是否在測試設置中聲明瞭某些東西?也許試着把你真實的例子。 – gustavodidomenico 2013-04-26 16:38:55