При запуске mstest для службы WCF WcfSvcHost не запускается и тесты не выполняются. Тесты проходят при отладке - PullRequest
5 голосов
/ 08 сентября 2010

Используя Visual Studio 2010, я написал простой сервис WCF и несколько интеграционных тестов, которые я хочу запустить на нем. Я создаю свой прокси для тестов во время выполнения в коде, а не с помощью конфигурации.

Мои тесты проходят отладку, но не при запуске!

FAIL, если выполняется - перейти к Test / Run / Tests в текущем контексте (поскольку вызываемая им служба WCF не была размещена)

PASS в отладке - перейти к Test / Debug / Tests в текущем контексте (поскольку у проекта WCF есть параметры WCF / Запуск хоста службы WCF при отладке другого проекта в том же решении)

Есть ли способ заставить WCFServiceHost запускаться при нормальном запуске тестов?

Спасибо, Andy

Test method BulkLoaderIntegrationTests.IntegrationTests.ImportEntries_withGoodPCMs_reportsCreatedOk threw exception: 
    System.ServiceModel.EndpointNotFoundException: Could not connect to net.tcp://localhost:8001/OLELoader. The connection attempt lasted for a time span of 00:00:00.9687686. TCP error code 10061: No connection could be made because the target machine actively refused it 127.0.0.1:8001.  ---> System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it 127.0.0.1:8001

1 Ответ

4 голосов
/ 09 сентября 2010

Я отключил «Запуск узла службы WCF» при отладке другого проекта в том же решении.

Я добавил статический метод в [ClassInitialize], чтобы «самостоятельно размещать» службу WCF в контексте теста на времятестирования.

        [ClassInitialize]
        public static void Init(TestContext t)
        {
            IntegrationTests.InitService();
        }

        [ClassCleanup]
        public static void CleanUp()
        {
            IntegrationTests.host.Close();         
        }

        private static bool ServiceIsStarted = false;
        private static ServiceHost host;
        private static void InitService()
        {           
            if (!ServiceIsStarted)
            {
                // Create the ServiceHost.
                host = new ServiceHost(typeof (OLEImport),
                                           new Uri(IntegrationTestHelper.BaseAddress));

                // Enable metadata publishing.
                ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
                smb.MetadataExporter.PolicyVersion = PolicyVersion.Policy15;
                host.Description.Behaviors.Add(smb);

                host.Open();
                ServiceIsStarted = true;
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...