我正在使用Microsoft.VisualStudio.TestTools.UnitTesting
進行單元測試。Assert.ThrowsException測試失敗,當它拋出異常時
我有這樣的測試,它斷言拋出了一個異常,它是失敗的
[TestMethod]
public async Task ShouldThrowHttpExceptionIfPassedObjectIsNull()
{
_mockLogger = new Mock<ILogger<DataService>>();
// setup memoryCache
object expected = null;
_mockNullMemoryCache = MockMemoryCacheService.GetNullMemoryCache(expected);
_mockSessionManagementService = new MockSessionManagementService();
_ds = new DataService(
_mockLogger.Object,
_mockNullMemoryCache.Object,
_mockSessionManagementService
);
Assert.ThrowsException<HttpException>(() => _ds.RetrieveFileData<object>(_incorrectFilePath, false));
}
當我調試它,代碼的最後一行之前就出現了錯誤運行,失敗是這樣的:
例外ex
是一個system.invalidOperationException
但這應該不重要,因爲它拋出一個HttpException無關緊要。爲什麼試驗與失敗的原因:
測試名稱:ShouldThrowHttpExceptionIfPassedObjectIsNull測試 真實姓名:xxx.xxx.xxx.xxx.ShouldThrowHttpExceptionIfPassedObjectIsNull 測試 來源:C:\用戶\ XXX \ xxx.cs :行88測試結果:失敗測試持續時間:0:04:35.5251661
結果堆棧跟蹤:在 xxxxxx.d__10.MoveNext() 在 C:\用戶\ XXX \ XXX \ xxx.cs:線 - - 從以前的位置反射堆棧結束的痕跡n爲拋出---在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任務 任務)在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任務 任務)結果消息:Assert.ThrowsException失敗。拋出異常 。預期HttpException異常。
EDIT 該代碼隨後移動到該代碼塊圖像之後:
else
{
// Parsing issue
_logger.LogError(string.Format("Id={0}, Could not retrieve data from {1} : Malformed source data", _sessionManagementService.SessionId, url));
throw new HttpException(HttpStatusCode.InternalServerError, "Malformed source data", true);
}
由於它是扔上述HttpException,它將引發DllNotFoundException。
拋出異常: 'System.DllNotFoundException' 在 System.Private.CoreLib.ni.dll
其他信息:無法加載DLL 'combase.dll':該 指定的模塊無法找到。 (異常來自HRESULT: 0x8007007E)
@ThomasWeller否,但測試正在測試HttpException,這是拋出的。 – BeniaminoBaggins