public async Task TearDown() { _cts.Dispose(); using (var cts = new CancellationTokenSource(TimeSpan.FromSeconds(5))) { await Task.WhenAll( _serverTransport.CloseAsync(cts.Token), _clientTransport.CloseAsync(cts.Token)); await _transportListener.StopAsync(cts.Token); } _clientTransport.DisposeIfDisposable(); _serverTransport.DisposeIfDisposable(); _transportListener.DisposeIfDisposable(); // Set null to avoid issues with NUnit reusing the test class instance _clientTransport = null; _serverTransport = null; _transportListener = null; }