diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreFixture.cs b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreFixture.cs index 33d1723c99..4735dcc719 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreFixture.cs +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreFixture.cs @@ -1,11 +1,27 @@ using System; +using System.Threading.Tasks; +using Testcontainers.MsSql; +using Xunit; namespace MyCompanyName.MyProjectName.EntityFrameworkCore; -public class MyProjectNameEntityFrameworkCoreFixture : IDisposable +public class MyProjectNameEntityFrameworkCoreFixture : IAsyncLifetime { - public void Dispose() + private readonly static MsSqlContainer _msSqlContainer = new MsSqlBuilder().Build(); + + public async Task InitializeAsync() + { + await _msSqlContainer.StartAsync(); + } + + public static string GetRandomConnectionString() { + var randomDbName = "Database=Db_" + Guid.NewGuid().ToString("N"); + return _msSqlContainer.GetConnectionString().Replace("Database=master", randomDbName, StringComparison.OrdinalIgnoreCase); + } + public async Task DisposeAsync() + { + await _msSqlContainer.DisposeAsync().AsTask(); } } diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreTestModule.cs b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreTestModule.cs index 589a8c5bb6..a819d0cec0 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreTestModule.cs +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreTestModule.cs @@ -1,11 +1,6 @@ -using Microsoft.Data.Sqlite; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Storage; +using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; -using Volo.Abp; using Volo.Abp.EntityFrameworkCore; -using Volo.Abp.EntityFrameworkCore.Sqlite; using Volo.Abp.FeatureManagement; using Volo.Abp.Modularity; using Volo.Abp.PermissionManagement; @@ -16,13 +11,10 @@ namespace MyCompanyName.MyProjectName.EntityFrameworkCore; [DependsOn( typeof(MyProjectNameApplicationTestModule), - typeof(MyProjectNameEntityFrameworkCoreModule), - typeof(AbpEntityFrameworkCoreSqliteModule) + typeof(MyProjectNameEntityFrameworkCoreModule) )] public class MyProjectNameEntityFrameworkCoreTestModule : AbpModule { - private SqliteConnection? _sqliteConnection; - public override void ConfigureServices(ServiceConfigurationContext context) { Configure(options => @@ -42,41 +34,24 @@ public class MyProjectNameEntityFrameworkCoreTestModule : AbpModule }); context.Services.AddAlwaysDisableUnitOfWorkTransaction(); - ConfigureInMemorySqlite(context.Services); + ConfigureMsSqlDatabase(context.Services); } - private void ConfigureInMemorySqlite(IServiceCollection services) + private void ConfigureMsSqlDatabase(IServiceCollection services) { - _sqliteConnection = CreateDatabaseAndGetConnection(); - + var connectionString = MyProjectNameEntityFrameworkCoreFixture.GetRandomConnectionString(); + using (var context = new MyProjectNameDbContext(new DbContextOptionsBuilder() + .UseSqlServer(connectionString) + .Options)) + { + context.Database.Migrate(); + } services.Configure(options => { options.Configure(context => { - context.DbContextOptions.UseSqlite(_sqliteConnection); + context.DbContextOptions.UseSqlServer(connectionString); }); }); } - - public override void OnApplicationShutdown(ApplicationShutdownContext context) - { - _sqliteConnection?.Dispose(); - } - - private static SqliteConnection CreateDatabaseAndGetConnection() - { - var connection = new AbpUnitTestSqliteConnection("Data Source=:memory:"); - connection.Open(); - - var options = new DbContextOptionsBuilder() - .UseSqlite(connection) - .Options; - - using (var context = new MyProjectNameDbContext(options)) - { - context.GetService().CreateTables(); - } - - return connection; - } } diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.csproj b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.csproj index 8f96ce08ce..fe570500d9 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.csproj +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.csproj @@ -11,11 +11,11 @@ - + diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbFixture.cs b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbFixture.cs index 55387d7ba5..3c873865fb 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbFixture.cs +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MongoDb/MyProjectNameMongoDbFixture.cs @@ -1,34 +1,27 @@ using System; -using EphemeralMongo; +using System.Threading.Tasks; +using Testcontainers.MongoDb; +using Xunit; namespace MyCompanyName.MyProjectName.MongoDB; -public class MyProjectNameMongoDbFixture : IDisposable +public class MyProjectNameMongoDbFixture : IAsyncLifetime { - public readonly static IMongoRunner MongoDbRunner; + private readonly static MongoDbContainer _mongoDbContainer = new MongoDbBuilder().WithCommand().Build(); - static MyProjectNameMongoDbFixture() + public async Task InitializeAsync() { - MongoDbRunner = MongoRunner.Run(new MongoRunnerOptions - { - UseSingleNodeReplicaSet = true - }); + await _mongoDbContainer.StartAsync(); } public static string GetRandomConnectionString() { - return GetConnectionString("Db_" + Guid.NewGuid().ToString("N")); + var randomDbName = "Db_" + Guid.NewGuid().ToString("N"); + return _mongoDbContainer.GetConnectionString().EnsureEndsWith('/') + randomDbName + "?authSource=admin"; } - public static string GetConnectionString(string databaseName) + public async Task DisposeAsync() { - var stringArray = MongoDbRunner.ConnectionString.Split('?'); - var connectionString = stringArray[0].EnsureEndsWith('/') + databaseName + "/?" + stringArray[1]; - return connectionString; - } - - public void Dispose() - { - MongoDbRunner?.Dispose(); + await _mongoDbContainer.DisposeAsync().AsTask(); } } diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.csproj b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.csproj index f0d1a185e2..0a96bbada4 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.csproj +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.csproj @@ -15,10 +15,7 @@ - - - - +