Тесты Azure DevOps успешно выполняются в RELEASE, неограниченно запускаются в DEBUG - PullRequest
1 голос
/ 05 июня 2019

Я использую Autofac и Automapper в своем решении.У меня написан модульный тест, и он работает без проблем локально.Когда я создал запрос на извлечение, модульные тесты успешно выполнялись в RELEASE;однако в DEBUG он работает бесконечно, а через некоторое время (то есть, через 45 минут) он просто не работает.

Я попытался настроить свой код таким образом, чтобы он просто использовал container, а неscope от Autofac для разрешения некоторых зависимостей.Я пытаюсь проверить разрешение моего приложения, а также AssertConfigurationIsValid моих профилей сопоставления;но проблема остается.

        public static IContainer Configure()
        {
            var builder = new ContainerBuilder();

            //Application
            builder.RegisterType<DerivedBatchVolumesApplication>().AsSelf();

            //Features
            builder.RegisterType<QEndOfMonthCalculator>().As<IQEndOfMonthCalculator>();
            builder.RegisterType<QProgressiveRounder>().As<IQProgressiveRounder>();

            //Configuration
            builder.Register(x => QEndOfMonthCalculatorConfiguration.FromMetadata()).As<IQEndOfMonthCalculatorConfiguration>();
            builder.Register(x => QDerivedBatchVolumesConfiguration.FromMetadata()).As<IQDerivedBatchVolumesConfiguration>();

            //Data
            builder.RegisterType<QTranTicketRepository>().As<IQRepository<TranTicketDO>>();
            builder.RegisterType<QCtBatchRepository>().As<IQRepository<CtBatchDO>>();
            builder.RegisterType<QPaystationRepository>().As<IQRepository<PaystationDO>>();
            builder.RegisterType<QTicketVolRepository>().As<IQRepository<TicketVolDO>>();
            builder.RegisterType<QSctrlRelatedCtrRepository>().As<IQRepository<SctrlRelatedCtrDO>>();
            builder.RegisterType<QAllocVolRepository>().As<IQRepository<AllocVolDO>>();

            //Mapper
            builder.RegisterType<QMapper>().As<IQMapper>();
            builder.RegisterAssemblyTypes(AppDomain.CurrentDomain.GetAssemblies())
                .Where(x => x.GetCustomAttribute<InjectableAttribute>() != null)
                .AsImplementedInterfaces();

            //Data Access
            builder.RegisterType<TranTicket>().AsSelf();
            builder.RegisterType<CtBatch>().AsSelf();
            builder.RegisterType<Paystation>().AsSelf();
            builder.RegisterType<TicketVol>().AsSelf();
            builder.RegisterType<SctrlRelatedCtr>().AsSelf();
            builder.RegisterType<AllocVol>().AsSelf();

            return builder.Build();
        }

        [TestInitialize]
        public void Setup()
        {
            var container = ContainerConfiguration.Configure();
            _scope = container.BeginLifetimeScope();
            _mapper = _scope.Resolve<IQMapper>();
        }

        [TestCleanup]
        public void Cleanup()
        {
            _scope.Dispose();
        }

        [TestMethod]
        public void MapperConfigurations_AreValid()
        {
            _mapper.AssertConfigurationIsValid();
        }

        [TestInitialize]
        public void Setup()
        {
            _endOfMonthCalculator = new Mock<IQEndOfMonthCalculator>();
            _tranTicket = new Mock<IQRepository<TranTicketDO>>();
            _ctBatch = new Mock<IQRepository<CtBatchDO>>();
            _paystation = new Mock<IQRepository<PaystationDO>>();
            _ticketVol = new Mock<IQRepository<TicketVolDO>>();
            _sctrlRelatedCtr = new Mock<IQRepository<SctrlRelatedCtrDO>>();
            _allocVol = new Mock<IQRepository<AllocVolDO>>();
            _derBatchVolConfiguration = new Mock<IQDerivedBatchVolumesConfiguration>();

            _container = ContainerConfiguration.Configure();
            _progressiveRounder = _container.Resolve<IQProgressiveRounder>();
            _mapper = _container.Resolve<IQMapper>();
        }

        [TestCleanup]
        public void Cleanup()
        {
            _container.Dispose();
        }

        [TestMethod]
        public void DerivedBatchVolumesApplication_Resolves()
        {
            //Arrange & Act
            var application = _container.Resolve<DerivedBatchVolumesApplication>();

            //Assert
            application.ShouldNotBeNull();
            application.ShouldBeOfType<DerivedBatchVolumesApplication>();
        }

Я ожидаю, что юнит-тест будет успешно выполнен для DEBUG, как и для RELEASE.

...