1

我正在做一个与 dapper 一起工作的单元测试。我已阅读以下文章:

https://miniprofiler.com/dotnet/HowTo/ProfileSql

https://miniprofiler.com/dotnet/ConsoleDotNet

这是我写的代码:

    [TestMethod]
    public void GetEmployeesTest()
    {
        var profiler=MiniProfiler.Start("Dapper Test");
        using (profiler.Step("Test"))
        {
            using (DbConnection cnn = new SqlConnection("Server=.;Initial Catalog=Northwind;Integrated Security=true;"))
            {
                var pcnn = new StackExchange.Profiling.Data.ProfiledDbConnection(cnn, profiler);
                pcnn.Open();
                var employees = pcnn.Query<Employee>("SELECT * FROM Employees");
                var count = pcnn.ExecuteScalar<long>("SELECT COUNT(*) FROM Employees");

                Assert.AreEqual(count, employees.Count());
            }
        }
        Console.WriteLine(profiler.RenderPlainText());

    }

问题是控制台上没有打印数据。

更新: 问题不在于Console.WriteLine(我也使用过Debug.WriteLineand TestContext.WriteLine)。真正的问题是为什么profiler.RenderPlainText()返回一个空字符串。

有什么我错过的吗?

4

1 回答 1

0

这是一个单元测试,你应该使用 Assert 方法来找出是对还是错。无需在控制台上打印任何内容。而且最好在内存中使用 sql 进行单元测试或 Mock 数据库。因为其他测试可能会操纵数据并导致此测试失败。

于 2019-09-08T06:56:18.853 回答