Estou tentando fazer o teste de unidade de um mecanismo de gerenciamento de host WCF que escrevi. O mecanismo basicamente cria instâncias ServiceHost dinamicamente com base na configuração. Isso nos permite reconfigurar dinamicamente quais serviços estão disponíveis sem ter que desativá-los e reiniciá-los sempre que um novo serviço for adicionado ou um antigo removido.
No entanto, tive dificuldade em testar a unidade deste mecanismo de gerenciamento de host devido à maneira como o ServiceHost funciona. Se um ServiceHost já tiver sido criado, aberto e ainda não fechado para um ponto de extremidade específico, outro ServiceHost para o mesmo ponto de extremidade não pode ser criado, resultando em uma exceção. Por causa do fato de que as plataformas de teste de unidade modernas paralelizam sua execução de teste, não tenho uma maneira eficaz de testar essa parte do código.
Usei o xUnit.NET, esperando que, devido à sua extensibilidade, pudesse encontrar uma maneira de forçá-lo a executar os testes em série. No entanto, não tive sorte. Espero que alguém aqui no SO tenha encontrado um problema semelhante e saiba como fazer com que os testes de unidade sejam executados em série.
NOTA: ServiceHost é uma classe WCF, escrita pela Microsoft. Não tenho capacidade de mudar seu comportamento. Hospedar cada ponto de extremidade de serviço apenas uma vez também é o comportamento adequado ... entretanto, não é particularmente adequado para testes de unidade.
TestServer
no docker. Então eu tive que serializar os testes de integração.