在我的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