有没有办法设置虚拟数据库来测试 .NET Framework 4.7.2 repository/database 集成?
Is there a way to setup dummy database to test a .NET Framework 4.7.2 repository/database integration?
我正在尝试为已经构建的 .NET Framework 应用程序设置存储库和数据库之间的集成测试。我一直在尝试寻找一种方法来设置和播种测试数据库或内存数据库,我可以使用它来 运行 一些测试,但在 .NET Framework 应用程序方面看不到太多。
我看到有一个 Microsoft.EntityFrameworkCore.InMemory
库可以完成我需要的功能,但它仅适用于 .NET Core 项目 运行ning 版本 6.0。我还发现在 .NET Framework 项目中几乎没有类似的提及,但想象一下必须有一种方法。
我在这个遗留应用程序上的工作是我第一次涉足 .NET 世界,所以我可能误解了我对这个主题的研究。是否可以设置 test/in 内存数据库来集成测试 .NET Framework 应用程序?如果是这样,这样做的最佳做法是什么?
如果您真的想测试一个纯 SQL 数据库,我的建议是设置一个本地 MSSQL 服务器来测试您的应用程序及其与数据库的集成。我不知道你有什么样的项目,但假设它是一个 ASP.NET
项目(Web API p.e)你应该已经定义好了 Models
就像您将在数据库中使用的表的构建块。 EF Core 实质上将这些模型映射为数据库中的表。
定义到本地 MSSQL 服务器的新连接
1。在 Startup.cs
上定义服务
using Microsoft.EntityFrameworkCore;
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<DatabaseContext>(opt => opt
.UseSqlServer(_config.GetConnectionString("Name"), builder =>
{
builder.EnableRetryOnFailure(5, TimeSpan.FromSeconds(10), null);
}));
}
EnableRetryOnFailure
将确保您的应用程序在出现连接错误时重试与数据库服务器的连接。
2。定义一个ConnectionString
转到appsettings.json
并添加
"ConnectionStrings": {
"Name": "Server=(localdb)\MSSQLLocalDB;Database=myDb;Trusted_Connection=true"
}
此示例使用 Windows 身份验证,但您可以使用 SQL Server Authentication
3。安装 MSSQL Server Management Studio
它对可视化数据库表有很大帮助
Entitiy Framework
内存中 可用于 .NET 5.0
。我建议在 MSSQL 中使用本地数据库实例是 Microsoft 自己的建议,如他们的网站
所述
The EF in-memory database often behaves differently than relational databases. Only use the EF in-memory database after fully understanding the issues and trade-offs involved, as discussed in Testing code that uses EF Core.
我正在尝试为已经构建的 .NET Framework 应用程序设置存储库和数据库之间的集成测试。我一直在尝试寻找一种方法来设置和播种测试数据库或内存数据库,我可以使用它来 运行 一些测试,但在 .NET Framework 应用程序方面看不到太多。
我看到有一个 Microsoft.EntityFrameworkCore.InMemory
库可以完成我需要的功能,但它仅适用于 .NET Core 项目 运行ning 版本 6.0。我还发现在 .NET Framework 项目中几乎没有类似的提及,但想象一下必须有一种方法。
我在这个遗留应用程序上的工作是我第一次涉足 .NET 世界,所以我可能误解了我对这个主题的研究。是否可以设置 test/in 内存数据库来集成测试 .NET Framework 应用程序?如果是这样,这样做的最佳做法是什么?
如果您真的想测试一个纯 SQL 数据库,我的建议是设置一个本地 MSSQL 服务器来测试您的应用程序及其与数据库的集成。我不知道你有什么样的项目,但假设它是一个 ASP.NET
项目(Web API p.e)你应该已经定义好了 Models
就像您将在数据库中使用的表的构建块。 EF Core 实质上将这些模型映射为数据库中的表。
定义到本地 MSSQL 服务器的新连接
1。在 Startup.cs
上定义服务
using Microsoft.EntityFrameworkCore;
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<DatabaseContext>(opt => opt
.UseSqlServer(_config.GetConnectionString("Name"), builder =>
{
builder.EnableRetryOnFailure(5, TimeSpan.FromSeconds(10), null);
}));
}
EnableRetryOnFailure
将确保您的应用程序在出现连接错误时重试与数据库服务器的连接。
2。定义一个ConnectionString
转到appsettings.json
并添加
"ConnectionStrings": {
"Name": "Server=(localdb)\MSSQLLocalDB;Database=myDb;Trusted_Connection=true"
}
此示例使用 Windows 身份验证,但您可以使用 SQL Server Authentication
3。安装 MSSQL Server Management Studio
它对可视化数据库表有很大帮助
Entitiy Framework
内存中 可用于 .NET 5.0
。我建议在 MSSQL 中使用本地数据库实例是 Microsoft 自己的建议,如他们的网站
The EF in-memory database often behaves differently than relational databases. Only use the EF in-memory database after fully understanding the issues and trade-offs involved, as discussed in Testing code that uses EF Core.