【问题标题】:Exposing tSQLt as NUnit tests将 tSQLt 公开为 NUnit 测试
【发布时间】:2013-09-16 17:12:03
【问题描述】:

有什么方法可以在 Visual Studio 中以类似于 NUnit 的方式公开 tSQLt 测试?

更好,因此解决方案中的所有测试都可以使用 Resharper 运行

...我知道 Red Gates SQL Test 产品,但它似乎只针对 SSMS

【问题讨论】:

    标签: visual-studio testing nunit tsqlt


    【解决方案1】:

    是的,这实际上非常简单,但确实需要编写一些管道代码。 TestClasses、Tests 和 TestResults 都在 tSQLt 中可用。我们简单地编写了一个 t4 模板来包装我们的 tSQLt 测试,并使用该模板来生成 nunit 测试。我们的 tSQLt 工作流程都在我们的 Visual Studio 项目中,我们使用 FluentMigrator 进行数据库迁移。

    如果您有兴趣,我已经在 github (tsqlt-demo-workflow) 上发布了一个 tSQLt 演示工作流解决方案。此工作流程与我们一直在使用的工作流程相似。

    希望这会有所帮助。

    【讨论】:

    • 嗨史蒂夫,我是时候弄清楚如何使用 git 了,所以我创建了一个 github 帐户并在昨天添加了我的第一个项目。看看吧,它可能会为您节省一些精力。 github.com/chilli-andrew/tsqlt-demo-workflow
    【解决方案2】:

    听起来您已经将 tSQLt 和测试添加到您的数据库中,并且您想运行它们。如果是这样,很容易将它们公开为 Resharper 可以运行的 NUnit 测试。

    在本例中,我使用 NUnit 的 [TestCaseSource] 调用数据库并检索 tSQLt 测试类的名称。您也可以在个人测试级别执行此操作,但这比我需要的更细粒度。返回 TestCaseData 对象中的名称意味着 NUnit 运行器(如 ReSharper)会将每个 tSQLt 测试类列为单独的测试。

        [TestCaseSource(nameof(GetSqlTests))]
        public void SqlTests()
        {
            try
            {
                // tSQLt.Run @testName
                var message = new Database().RunTest(TestContext.CurrentContext.Test.Name);
                Assert.Pass(message);
            }
            catch (SqlException ex)
            {
                Assert.Fail(ex.Message);
            }
        }
    
        public IEnumerable<TestCaseData> GetSqlTests()
        {
            // SELECT Name from [tSQLt].[TestClasses]
            var names = new Database().GetTestClasses();
            return names.Select(name => new TestCaseData().SetName(name));
        }
    

    【讨论】:

      【解决方案3】:

      我编写了一个 Visual Studio 测试,它在 .sql 文件中搜索 tSQLt 测试并且可以使用测试资源管理器窗口运行:

      https://the.agilesql.club/blogs/Ed-Elliott/tSQLt-Visual-Studio-Test-Adapter

      我正计划编写一个 resharper 插件来让它也运行它们,但我还没有这样做。

      埃德

      【讨论】:

        猜你喜欢
        • 2012-04-11
        • 1970-01-01
        • 2017-10-30
        • 1970-01-01
        • 2010-11-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-25
        相关资源
        最近更新 更多