2013-09-16 3 views
2

Есть ли способ опубликовать тесты tSQLt внутри Visual Studio, аналогично NUnit?Выявление tSQLt как тестов NUnit

Даже лучше, так что все тесты в растворе могут быть выполнены с помощью Resharper

... Я знаю продукт Red Gates SQL Test, но это только кажется, что цель SSMS

ответ

5

Да, это на самом деле очень просто, но вам нужно написать какой-нибудь сантехнический код. TestClasses, Tests и TestResults доступны в tSQLt. Мы просто написали шаблон t4, который завершает наши тесты tSQLt, и мы используем шаблон для генерации тестов nunit. Наш рабочий процесс tSQLt находится в рамках наших проектов Visual Studio, и мы используем FluentMigrator для миграции нашей базы данных.

Я разместил демонстрационное рабочее решение tSQLt на github (tsqlt-demo-workflow), если вы заинтересованы. Этот рабочий процесс похож на тот, с которым мы работаем.

Надеюсь, это поможет.

+0

Круто, я дам ему идти ... – SteveC

+0

Привет Стив, это о времени я работал, как работать с мерзавцем, поэтому я создал аккаунт GitHub и вчера добавил свой первый проект. Проверьте это, это может сэкономить вам немного усилий. https://github.com/chilli-andrew/tsqlt-demo-workflow – Andrew

0

Похоже, вы уже добавили tSQLt и проверили в своей базе данных, и вы хотите их запустить. Если это так, довольно легко разоблачить их как тесты NUnit, которые может выполнять Resharper.

В этом примере я использую NNnit's [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)); 
    } 
1

Я написал тест Visual Studio адаптировано, что поиски tSQLt тестов в .sql файлов и могут быть запущены с помощью окна проводника теста:

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

Я планирую писать ReSharper плагин, чтобы он запускал их, но я еще этого не сделал.

Ed

Смежные вопросы