单元测试:重构代码将多数据库支持整合到TestHelper文件中,更改此文件的宏定义即可更改数据库 #SQLite/MySQL
This commit is contained in:
parent
44dd905141
commit
40a81b7b50
|
@ -44,10 +44,7 @@ namespace Bootstrap.Admin
|
|||
{
|
||||
base.ConfigureWebHost(builder);
|
||||
|
||||
var sqlConnectionStrings = "Data Source=.;Initial Catalog=UnitTest;User ID=sa;Password=sa";
|
||||
builder.ConfigureAppConfiguration(app => app.AddInMemoryCollection(new KeyValuePair<string, string>[] {
|
||||
new KeyValuePair<string, string>("ConnectionStrings:ba", sqlConnectionStrings)
|
||||
}));
|
||||
TestHelper.ConfigureWebHost(builder);
|
||||
}
|
||||
|
||||
public string Login(string userName = "Admin", string password = "123789")
|
||||
|
|
|
@ -1,15 +1,5 @@
|
|||
//#define SQLite
|
||||
//#define MySQL
|
||||
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using System.Collections.Generic;
|
||||
|
||||
#if SQLite
|
||||
using System;
|
||||
using System.IO;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using UnitTest;
|
||||
#endif
|
||||
|
||||
namespace Bootstrap.DataAccess
|
||||
{
|
||||
|
@ -17,39 +7,13 @@ namespace Bootstrap.DataAccess
|
|||
{
|
||||
static BootstrapAdminStartup()
|
||||
{
|
||||
var sqlConnectionStrings = "Data Source=.;Initial Catalog=UnitTest;User ID=sa;Password=sa";
|
||||
var mysqlConnectionStrings = "Server=.;Database=UnitTest;Uid=argozhang;Pwd=argo@163.com;SslMode=none;";
|
||||
var config = new ConfigurationBuilder().AddInMemoryCollection(new KeyValuePair<string, string>[] {
|
||||
new KeyValuePair<string, string>("ConnectionStrings:ba", sqlConnectionStrings),
|
||||
new KeyValuePair<string, string>("DB:0:Enabled", "false"),
|
||||
|
||||
new KeyValuePair<string, string>("DB:1:Enabled", "false"),
|
||||
new KeyValuePair<string, string>("DB:1:ProviderName", "SQLite"),
|
||||
new KeyValuePair<string, string>("DB:1:ConnectionStrings:ba", "Data Source=UnitTest.db"),
|
||||
|
||||
new KeyValuePair<string, string>("DB:2:Enabled", "false"),
|
||||
new KeyValuePair<string, string>("DB:2:ProviderName", "MySql"),
|
||||
new KeyValuePair<string, string>("DB:2:ConnectionStrings:ba", mysqlConnectionStrings),
|
||||
new KeyValuePair<string, string>("LongbowCache:Enabled", "false")
|
||||
}).Build();
|
||||
var config = TestHelper.CreateConfiguraton();
|
||||
|
||||
var sc = new ServiceCollection();
|
||||
sc.AddSingleton<IConfiguration>(config);
|
||||
sc.AddSingleton(config);
|
||||
sc.AddConfigurationManager(config);
|
||||
sc.AddCacheManager(config);
|
||||
sc.AddDbAdapter();
|
||||
|
||||
#if SQLite
|
||||
config["DB:1:Enabled"] = "true";
|
||||
|
||||
// Copy File
|
||||
var dbPath = TestHelper.RetrievePath($"UnitTest{Path.DirectorySeparatorChar}DB{Path.DirectorySeparatorChar}UnitTest.db");
|
||||
var dbFile = Path.Combine(AppContext.BaseDirectory, "UnitTest.db");
|
||||
if (!File.Exists(dbFile)) File.Copy(dbPath, dbFile);
|
||||
|
||||
#elif MySQL
|
||||
config["DB:2:Enabled"]= "true";
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,9 @@
|
|||
using System;
|
||||
//#define SQLite
|
||||
//#define MySQL
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
|
||||
namespace UnitTest
|
||||
|
@ -36,6 +41,76 @@ namespace UnitTest
|
|||
|
||||
var targetFile = Path.Combine(AppContext.BaseDirectory, "Longbow.lic");
|
||||
if (!File.Exists(targetFile)) File.Copy(licFile, targetFile, true);
|
||||
|
||||
#if SQLite
|
||||
CopySQLiteDBFile();
|
||||
#endif
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public static void CopySQLiteDBFile()
|
||||
{
|
||||
var dbPath = RetrievePath($"UnitTest{Path.DirectorySeparatorChar}DB{Path.DirectorySeparatorChar}UnitTest.db");
|
||||
var dbFile = Path.Combine(AppContext.BaseDirectory, "UnitTest.db");
|
||||
if (!File.Exists(dbFile)) File.Copy(dbPath, dbFile);
|
||||
}
|
||||
|
||||
private const string SqlConnectionStrings = "Data Source=.;Initial Catalog=UnitTest;User ID=sa;Password=sa";
|
||||
private const string SQLiteConnectionStrings = "Data Source=UnitTest.db;";
|
||||
private const string MySqlConnectionStrings = "Server=.;Database=UnitTest;Uid=argozhang;Pwd=argo@163.com;SslMode=none;";
|
||||
|
||||
public static void ConfigureWebHost(IWebHostBuilder builder)
|
||||
{
|
||||
builder.ConfigureAppConfiguration(app => app.AddInMemoryCollection(new KeyValuePair<string, string>[] {
|
||||
new KeyValuePair<string, string>("ConnectionStrings:ba", SqlConnectionStrings)
|
||||
}));
|
||||
#if SQLite
|
||||
builder.ConfigureAppConfiguration(app => app.AddInMemoryCollection(new KeyValuePair<string, string>[] {
|
||||
new KeyValuePair<string, string>("DB:0:Enabled", "false"),
|
||||
new KeyValuePair<string, string>("DB:1:Enabled", "false"),
|
||||
new KeyValuePair<string, string>("DB:2:ConnectionStrings:ba", SQLiteConnectionStrings)
|
||||
}));
|
||||
#endif
|
||||
|
||||
#if MySQL
|
||||
builder.ConfigureAppConfiguration(app => app.AddInMemoryCollection(new KeyValuePair<string, string>[] {
|
||||
new KeyValuePair<string, string>("DB:0:Enabled", "false"),
|
||||
new KeyValuePair<string, string>("DB:1:ConnectionStrings:ba", MySqlConnectionStrings)
|
||||
}));
|
||||
#endif
|
||||
}
|
||||
|
||||
public static IConfiguration CreateConfiguraton()
|
||||
{
|
||||
var config = new ConfigurationBuilder().AddInMemoryCollection(new KeyValuePair<string, string>[] {
|
||||
new KeyValuePair<string, string>("ConnectionStrings:ba", SqlConnectionStrings),
|
||||
new KeyValuePair<string, string>("DB:0:Enabled", "false"),
|
||||
|
||||
new KeyValuePair<string, string>("DB:1:Enabled", "false"),
|
||||
new KeyValuePair<string, string>("DB:1:ProviderName", "SQLite"),
|
||||
new KeyValuePair<string, string>("DB:1:ConnectionStrings:ba", SQLiteConnectionStrings),
|
||||
|
||||
new KeyValuePair<string, string>("DB:2:Enabled", "false"),
|
||||
new KeyValuePair<string, string>("DB:2:ProviderName", "MySql"),
|
||||
new KeyValuePair<string, string>("DB:2:ConnectionStrings:ba", MySqlConnectionStrings),
|
||||
new KeyValuePair<string, string>("LongbowCache:Enabled", "false")
|
||||
});
|
||||
|
||||
#if SQLite
|
||||
config.AddInMemoryCollection(new KeyValuePair<string, string>[] {
|
||||
new KeyValuePair<string, string>("DB:1:Enabled", "true")
|
||||
});
|
||||
CopySQLiteDBFile();
|
||||
#endif
|
||||
|
||||
#if MySQL
|
||||
config.AddInMemoryCollection(new KeyValuePair<string, string>[] {
|
||||
new KeyValuePair<string, string>("DB:2:Enabled", "true")
|
||||
});
|
||||
#endif
|
||||
return config.Build();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue