我正在 EF Core 2.2 中的 DbContext
(到 Oracle 数据库)上运行一些单元测试 (NUnit),我想查看 SQL
查询它是为每个单元测试构建的,最好是
- 在调试窗口和
- 在“测试资源管理器” Pane 的每个测试的详细信息 View 中。
我有一个类似于以下内容的单元测试:
[SetUp]
public void Setup()
{
var options = new DbContextOptionsBuilder<MyContext>()
.UseOracle("some connection string")
.Options;
_context = new MyContext(options);
}
[Test]
public void We_can_count_all_the_things()
{
var count = _context.Things.Count();
Assert.That(count, Is.GreaterThan(0));
// something like this for Test output:
Assert.Pass($"SQL QUERY:{???}")
}
...或者我可以使用 ILogger
将输出直接输出到测试结果或一些我不知道的魔法。
感谢您的帮助。
最佳答案
有一个答案 here显示如何使用 Microsoft.Extensions.Logging.Console
包记录 EF Core SQL 查询...
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
=> optionsBuilder
.UseLoggerFactory(MyLoggerFactory) // Warning: Do not create a new ILoggerFactory instance each time
.UseSqlServer(
@"Server=(localdb)\mssqllocaldb;Database=EFLogging;Trusted_Connection=True;ConnectRetryCount=0");
像这样:-
public static readonly LoggerFactory MyLoggerFactory
= new LoggerFactory(new[] {new ConsoleLoggerProvider((_, __) => true, true)});
更多信息here
关于c# - 单元测试时 EF Core 记录 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57633746/