[英]How do I use Assert to verify that an exception has been thrown with MSTest?
[英]How to assert an exception has been thrown
我正在使用MOQ設置一個拋出InvalidOperationException
的方法。 然后我使用MSTest Assert.ThrowsException
斷言該方法拋出指定的異常。 當我調試測試時,它會拋出異常,而不是斷言已拋出預期的異常。
我搜索了這個,並沒有提出與我的問題相關的例子。 我已經為方法添加了一個屬性[ExpectedException(typeof(InvalidOperationException))]
但是我得到了相同的結果。 我已經嘗試將拋出異常的代碼移到Assert之外並進入它自己的代碼行,但是我得到了相同的結果。 我沒有嘗試將代碼包裝到從測試方法調用的自己的方法中,因為我不明白如何將模擬對象作為參數傳遞給新方法(我將使用什么類型?編譯器不會像Moq或MOQ)。
[TestClass]
public class UnitTest1
{
[ExpectedException(typeof(InvalidOperationException))]
[TestMethod]
public void TestMethod1()
{
var mock = new Mock<IFoo>();
// throwing when invoked with specific parameters
mock.Setup(foo =>
foo.DoSomething("reset")).Throws<InvalidOperationException>();
//mock.Object.DoSomething("reset");
Assert.ThrowsException<InvalidOperationException>(() =>
mock.Object.DoSomething("reset"));
}
}
感謝Kenneth K幫我看錯。 根據我所看到的情況,我相信當你的意圖是斷言已拋出異常時,無法通過單元測試進行調試。 但是你可以運行測試並聲明已拋出異常。 要使用MSTest正確設置測試以聲明異常,請使用ExpectedExceptions屬性。 雖然我假設它可能在某種情況下使用Assert.ThrowsException,但在單元測試的情況下,我無法使該方法工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.