我Microsoft.VisualStudio.TestTools.UnitTesting
用于单元测试。
我有这个测试,它断言抛出了一个异常并且它失败了
[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:\Users\xxx\xxx.cs:第 88 行测试结果:失败测试持续时间:0:04:35.5251661
结果 StackTrace: at xxxxxx.d__10.MoveNext() in C:\Users\xxx\xxx\xxx.cs:line 101 --- 在 System.Runtime.CompilerServices 处从先前引发异常的位置结束堆栈跟踪.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 结果消息:Assert.ThrowsException 失败。没有抛出异常。预期会出现 HttpException 异常。
编辑 代码然后在图像之后移动到这个代码块中:
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.Private.CoreLib.ni.dll 中的“System.DllNotFoundException”
附加信息:无法加载 DLL 'combase.dll':找不到指定的模块。(来自 HRESULT 的异常:0x8007007E)