有没有办法以类似于NUnit的方式在Visual Studio中公开tSQLt测试?
更好,所以解决方案中的所有测试都可以使用Resharper
运行...我知道Red Gates SQL Test产品,但它似乎只针对SSMS
答案 0 :(得分:5)
是的,这实际上非常简单,但确实需要编写一些管道代码。 TestClasses,Tests和TestResults都可以在tSQLt中找到。我们编写了一个包含tSQLt测试的t4模板,我们使用该模板生成nunit测试。我们的tSQLt工作流程都在我们的Visual Studio项目中,我们使用FluentMigrator进行数据库迁移。
如果您有兴趣,我已经在github(tsqlt-demo-workflow)上发布了一个tSQLt演示工作流解决方案。此工作流程与我们一直使用的工作流程类似。
希望这有帮助。
答案 1 :(得分:1)
听起来你已经在数据库中添加了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));
}
答案 2 :(得分:1)
我编写了一个visual studio test,用于搜索.sql文件中的tSQLt测试,可以使用test explorer窗口运行:
https://the.agilesql.club/blogs/Ed-Elliott/tSQLt-Visual-Studio-Test-Adapter
我打算写一个resharper插件让它运行它们但我还没有完成它。
版