Я использую 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.