如何在单元测试中创建sqlite数据库,并在C# .net完成类的所有测试后将其删除

nzk0hqpo  于 2023-01-21  发布在  SQLite
关注(0)|答案(2)|浏览(116)

如何在单元测试中创建SQLite数据库并在所有测试完成后从C# .net类中删除它
我需要创建数据库,在那里添加一些文件,并在单元测试类方法完成后删除它。

r9f1avp5

r9f1avp51#

查看本教程:https://dotnetcorecentral.com/blog/sqlite-for-unit-testing-in-net-core/

[Test]
public void Test_Get_By_Id()
{
    var connection = new SqliteConnection("DataSource=:memory:");
    connection.Open();

    var options = new DbContextOptionsBuilder<EmployeeContext>().UseSqlite(connection).Options;

    using (var context = new EmployeeContext(options))
    {
        context.Database.EnsureCreated();
    }

    using (var context = new EmployeeContext(options))
    {
        context.Employees.Add(new Employee { Id = 1, FirstName = "John", LastName = "Doe", Address = "123 Street", HomePhone = "111-111-1111", CellPhone = "222-222-2222" });
        context.SaveChanges();
    }

    using (var context = new EmployeeContext(options))
    {
        var provider = new EmployeeProvider(context);
        var employee = provider.Get(1);

        Assert.AreEqual("John", employee.FirstName);
    }
}

创建一个内存数据库,然后确保数据库已创建,添加任何要检查的内容,然后可以执行任何查询/Assert以检查其是否按预期工作。

eagi6jfj

eagi6jfj2#

只是创建这个方法,并使用“数据库”的其他事实(测试)。希望工程为您。

private ApplicationDbContext GetContext()
    {
        var options = new DbContextOptionsBuilder().
            UseSqlite("Data Source = nameOfYourDatabase.db")
            .Options;

        var db = new ApplicationDbContext(options);

        db.Database.EnsureDeleted();
        db.Database.EnsureCreated();

        return db;
    }

    [Fact]
    public void CreateDatabaseTest()
    {
        using var db = GetContext();
    }

相关问题