using Microsoft.EntityFrameworkCore; using HardwarePerformance.Core.Entities; using HardwarePerformance.Infrastructure.Data; namespace HardwarePerformance.Infrastructure.Tests { /// /// 测试基类,提供InMemory数据库设置 /// public abstract class TestBase : IDisposable { protected AppDbContext _context; protected DbContextOptions _options; public TestBase() { // 创建InMemory数据库选项 _options = new DbContextOptionsBuilder() .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()) .Options; // 创建数据库上下文 _context = new AppDbContext(_options); // 初始化数据库 SeedDatabase(); } /// /// 初始化测试数据 /// protected virtual void SeedDatabase() { // 创建测试类别 var categories = new List { new Category { Id = 1, Name = "手机CPU", Description = "移动设备处理器", IconUrl = "cpu" }, new Category { Id = 2, Name = "电脑CPU", Description = "桌面处理器", IconUrl = "desktop" }, new Category { Id = 3, Name = "手机GPU", Description = "移动设备图形处理器", IconUrl = "gpu" }, new Category { Id = 4, Name = "电脑GPU", Description = "桌面图形处理器", IconUrl = "graphics" } }; _context.Categories.AddRange(categories); // 创建测试数据源 var dataSources = new List { new DataSource { Id = 1, Name = "GeekBench", Description = "GeekBench基准测试", Url = "https://www.geekbench.com" }, new DataSource { Id = 2, Name = "3DMark", Description = "3DMark图形性能测试", Url = "https://www.3dmark.com" }, new DataSource { Id = 3, Name = "AnTuTu", Description = "AnTuTu综合性能测试", Url = "https://www.antutu.com" } }; _context.DataSources.AddRange(dataSources); // 创建测试产品 var products = new List { new Product { Id = 1, Name = "Snapdragon 8 Gen 3", Model = "SM8650-AB", Manufacturer = "Qualcomm", CategoryId = 1, ReleaseDate = new DateTime(2023, 10, 24), CurrentRank = 1, ImageUrl = "https://example.com/snapdragon8gen3.jpg" }, new Product { Id = 2, Name = "Apple A17 Pro", Model = "A17 Pro", Manufacturer = "Apple", CategoryId = 1, ReleaseDate = new DateTime(2023, 9, 12), CurrentRank = 2, ImageUrl = "https://example.com/a17pro.jpg" }, new Product { Id = 3, Name = "Intel Core i9-13900K", Model = "i9-13900K", Manufacturer = "Intel", CategoryId = 2, ReleaseDate = new DateTime(2022, 10, 20), CurrentRank = 1, ImageUrl = "https://example.com/i913900k.jpg" }, new Product { Id = 4, Name = "AMD Ryzen 9 7950X", Model = "Ryzen 9 7950X", Manufacturer = "AMD", CategoryId = 2, ReleaseDate = new DateTime(2022, 9, 27), CurrentRank = 2, ImageUrl = "https://example.com/ryzen97950x.jpg" } }; _context.Products.AddRange(products); // 创建测试性能分数 var performanceScores = new List { new PerformanceScore { Id = 1, ProductId = 1, DataSourceId = 1, Score = 7300, TestType = "Single-Core", TestDate = new DateTime(2023, 11, 1) }, new PerformanceScore { Id = 2, ProductId = 1, DataSourceId = 1, Score = 22000, TestType = "Multi-Core", TestDate = new DateTime(2023, 11, 1) }, new PerformanceScore { Id = 3, ProductId = 2, DataSourceId = 1, Score = 7100, TestType = "Single-Core", TestDate = new DateTime(2023, 10, 1) }, new PerformanceScore { Id = 4, ProductId = 2, DataSourceId = 1, Score = 21000, TestType = "Multi-Core", TestDate = new DateTime(2023, 10, 1) }, new PerformanceScore { Id = 5, ProductId = 3, DataSourceId = 1, Score = 3200, TestType = "Single-Core", TestDate = new DateTime(2022, 11, 1) }, new PerformanceScore { Id = 6, ProductId = 3, DataSourceId = 1, Score = 22000, TestType = "Multi-Core", TestDate = new DateTime(2022, 11, 1) }, new PerformanceScore { Id = 7, ProductId = 4, DataSourceId = 1, Score = 3100, TestType = "Single-Core", TestDate = new DateTime(2022, 10, 1) }, new PerformanceScore { Id = 8, ProductId = 4, DataSourceId = 1, Score = 21000, TestType = "Multi-Core", TestDate = new DateTime(2022, 10, 1) } }; _context.PerformanceScores.AddRange(performanceScores); // 保存更改 _context.SaveChanges(); } public void Dispose() { _context.Dispose(); } } }