0
我正在使用MSTest和[TestMethod]我有一個對象的代碼拋出異常,我抓住它;在某些情況下,我重新拋出它,其他時候我沒有,但是測試總是失敗,表明拋出了異常,儘管我不會再拋出它。我如何有條件地忽略異常?因爲它是有條件的,我是否重新拋出異常,我不能使用[ExpectedException]。MSTest [TestMethod]即使在代碼測試捕獲並且不會重新拋出異常時失敗?
我正在使用MSTest和[TestMethod]我有一個對象的代碼拋出異常,我抓住它;在某些情況下,我重新拋出它,其他時候我沒有,但是測試總是失敗,表明拋出了異常,儘管我不會再拋出它。我如何有條件地忽略異常?因爲它是有條件的,我是否重新拋出異常,我不能使用[ExpectedException]。MSTest [TestMethod]即使在代碼測試捕獲並且不會重新拋出異常時失敗?
您應該在確定性環境下測試您的方法,即使用一組始終返回相同響應的參數。如果你的方法有時拋出一個異常,有時不拋出,你應該對它拋出的情況進行一次測試,對於拋出的情況,你應該進行另一次測試。
如果你這樣做而不是可以控制你拋出異常的條件,這是一個標誌,你需要重構你的代碼,以便提取條件,並且能夠以確定性方式測試該方法辦法。
例如:
[TestMethod]
public void SomeMethodDoesntFail()
{
var obj = new objectUnderTest();
var shouldThrow = false;
var result = obj.SomeMethod(shouldThrow);
Assert.IsEqual(*expected result*, result);
}
[TestMethod, ExpectedException]
public void SomeMethodFails()
{
var obj = new objectUnderTest();
var shouldThrow = true;
var result = obj.SomeMethod(shouldThrow);
}