Этот код прекрасно работает, когда я отладки модульного тестирования:Design_Time_Address работает в отладчике, но не во время единичного испытания
[TestFixture]
public class Tests
{
private ServiceHost _host;
private Uri _baseAddress = new Uri(<code>"http://localhost:8733/Design_Time_Addresses/service"</code>);
private Inbound.Client.ServiceClient _client;
[SetUp]
public void Setup()
{
_host = new ServiceHost(typeof(MyService), _baseAddress);
var smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
smb.MetadataExporter.PolicyVersion = PolicyVersion.Policy15;
_host.Description.Behaviors.Add(smb);
_host.Open();
_client = new Inbound.Client.ServiceClient();
}
[TearDown]
public void TearDown()
{
_client.Close();
_host.Close();
}
[Test]
public void Can_ping()
{
PingResponse response = _client.Ping(new PingRequest { Echo = "Hi" });
Assert.IsNotNull(response);
Assert.AreEqual("Hi", response.Echo);
}
}
Однако, когда я бегу модульного тестирования (правой кнопкой мыши на тест в VS Test Проводнике, Run Selected Test) Я получаю сообщение об ошибке:
"... System.ServiceModel.ServerTooBusyException :
The HTTP service located at http://localhost:8733/Design_Time_Addresses is unavailable. ...
----> System.Net.WebException : The remote server returned an error: (503) Server Unavailable."
Вероятно, когда тест NUnit бегун запускает тест, он не может запустить хост. Я знаю, что Design_Time_Address uri зарегистрирован в netsh во время установки VS, и мне интересно, должна ли быть дополнительная регистрация только для NUnit test runner.