在我的ASP.NET Core项目中,我写了ILoggerFactory
的扩展,它增加了一个自定义的ILoggerProvider
。 (类似NLog.Extensions.Logging)在ASP.NET Core中处理ILoggerFactory
我在Startup.cs
添加此:
loggerFactory.AddRabbitLogger(Configuration.GetSection(nameof(WebLoggerOptions)));
测井工作完美,但是,它发送消息给RabbitMQ的,这意味着它打开一个连接和信道。这些不能继续开放,所以我关闭Dispose
通道和连接(ILoggerProvider
已经从IDisposable
继承)
我的测试是成功的,但问题是,我的测试输出始终显示此错误
Error while unloading appdomain. (Exception from HRESULT: 0x80131015)
的另一个问题是测试完成后需要几秒钟才能显示该错误,因此我无法启动任何新测试。
有没有办法在我的测试中触发处置记录器提供程序?
这是我的集成测试的代码。正如你所看到的,我做了处置在TearDown
集成测试
public abstract class TestBase
{
private TestServer _server;
protected HttpClient TestHttpClient { get; private set; }
[SetUp]
protected void BaseSetup()
{
_server = new TestServer(new WebHostBuilder()
.UseStartup<Startup>());
TestHttpClient = _server.CreateClient();
}
[TearDown]
public void TearDown()
{
TestHttpClient.Dispose();
_server.Dispose();
}
}
public class MyTestClass : TestBase
{
[Test]
public async Task SendTest()
{
requestUrl = "api/ControllerName/Mehthod";
var response = await TestHttpClient.PostAsync(requestUrl, pardotFormCommand, GetMediaTypeFormatter());
response.StatusCode.Should().Be(HttpStatusCode.OK);
}
}
你还没有提供任何代码,但我的猜测是,你可不能在拆卸时手动处理LoggerFactory? –
你是使用内置的DI容器还是其他的东西? – Dealdiane
另外,你可以发布你的记录器类的片段和测试? – Dealdiane