有没有什么方法可以像使用NUnit一样在Visual Studio中公开tSQLt测试?将tSQLt暴露为NUnit测试
甚好,于是在一个解决方案中所有的测试可以使用ReSharper的
运行......我知道红盖茨的SQL测试产品,但它似乎只针对SSMS
有没有什么方法可以像使用NUnit一样在Visual Studio中公开tSQLt测试?将tSQLt暴露为NUnit测试
甚好,于是在一个解决方案中所有的测试可以使用ReSharper的
运行......我知道红盖茨的SQL测试产品,但它似乎只针对SSMS
是的,这实际上很简单,但确实需要编写一些管道代码。 TestClasses,Tests和TestResults都可以在tSQLt中使用。我们只是写了一个t4模板来包装我们的tSQLt测试,我们使用模板来生成nunit测试。我们的tSQLt工作流程都在我们的Visual Studio项目中,我们使用FluentMigrator来完成数据库迁移。
如果您有兴趣,我已经在github上发布了一个tSQLt演示工作流程解决方案(tsqlt-demo-workflow)。该工作流程与我们一直在使用的工作流程类似。
希望这会有所帮助。
这听起来像你已经添加tSQLt和测试到你的数据库,你想运行它们。如果是这样,将它们作为NUnit测试哪些Resharper可以运行很容易。
在本例中,我使用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));
}
我已经写了Visual Studio的测试适合使用测试资源管理器窗口,在.sql文件tSQLt测试和搜索可以运行:
https://the.agilesql.club/blogs/Ed-Elliott/tSQLt-Visual-Studio-Test-Adapter
我计划写一ReSharper的插件让它运行它们,但我还没有做到这一点。
埃德
酷,我给它一个去... – SteveC
喜史蒂夫,它是关于时间,我制定了如何使用Git工作,所以我创建了一个GitHub的帐户,并添加昨天我的第一个项目。检查一下,它可以为你节省一些努力。 https://github.com/chilli-andrew/tsqlt-demo-workflow – Andrew