diff --git a/framework/src/Volo.Abp.AspNetCore.TestBase/Volo/Abp/AspNetCore/TestBase/AbpAspNetCoreIntegratedTestBase.cs b/framework/src/Volo.Abp.AspNetCore.TestBase/Volo/Abp/AspNetCore/TestBase/AbpAspNetCoreIntegratedTestBase.cs index eb9504570c..c362d5074c 100644 --- a/framework/src/Volo.Abp.AspNetCore.TestBase/Volo/Abp/AspNetCore/TestBase/AbpAspNetCoreIntegratedTestBase.cs +++ b/framework/src/Volo.Abp.AspNetCore.TestBase/Volo/Abp/AspNetCore/TestBase/AbpAspNetCoreIntegratedTestBase.cs @@ -7,11 +7,15 @@ using Microsoft.AspNetCore.Routing; using Microsoft.AspNetCore.TestHost; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; +using Volo.Abp.Modularity; namespace Volo.Abp.AspNetCore.TestBase; -public abstract class AbpAspNetCoreIntegratedTestBase : AbpTestBaseWithServiceProvider, IDisposable - where TStartup : class +/// +/// Can be a module type or old-style ASP.NET Core Startup class. +/// +public abstract class AbpAspNetCoreIntegratedTestBase : AbpTestBaseWithServiceProvider, IDisposable + where TStartupModule : class { protected TestServer Server { get; } @@ -39,7 +43,15 @@ public abstract class AbpAspNetCoreIntegratedTestBase : AbpTestBaseWit return Host.CreateDefaultBuilder() .ConfigureWebHostDefaults(webBuilder => { - webBuilder.UseStartup(); + if (typeof(TStartupModule).IsAssignableTo()) + { + webBuilder.UseStartup>(); + } + else + { + webBuilder.UseStartup(); + } + webBuilder.UseAbpTestServer(); }) .UseAutofac() diff --git a/framework/src/Volo.Abp.AspNetCore.TestBase/Volo/Abp/AspNetCore/TestBase/TestStartup.cs b/framework/src/Volo.Abp.AspNetCore.TestBase/Volo/Abp/AspNetCore/TestBase/TestStartup.cs new file mode 100644 index 0000000000..be641912c7 --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.TestBase/Volo/Abp/AspNetCore/TestBase/TestStartup.cs @@ -0,0 +1,18 @@ +using Microsoft.AspNetCore.Builder; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Threading; + +namespace Volo.Abp.AspNetCore.TestBase; + +internal class TestStartup +{ + public void ConfigureServices(IServiceCollection services) + { + AsyncHelper.RunSync(() => services.AddApplicationAsync(typeof(TStartupModule))); + } + + public void Configure(IApplicationBuilder app) + { + AsyncHelper.RunSync(app.InitializeApplicationAsync); + } +} \ No newline at end of file