tSQLt не запускает тесты

У меня есть установка, которая раньше работала, но теперь, похоже, нет. Интересно, если кто-то еще испытал это.

Тесты, которые когда-то проводились, теперь не проводятся Ничего не видно, чтобы бежать. Вывод всегда следующий:

+ ---------------------- + | Сводка выполнения теста | + ---------------------- +

| Нет | Имя тестового примера | Результат |

+ - + -------------- + ------ +

Сводка тестовых примеров: 0 тестовых заданий выполнено, 0 успешно выполнено, 0 не выполнено, 0 с ошибкой.

2 ответа

Тестовые процедуры должны начинаться с проверки всех ключевых слов в нижнем регистре. [тест, чтобы начать имя в порядке. Все остальные sprocs игнорируются. Это было продемонстрировано в коде, но кто-то (гм) решил нумеровать тесты, чтобы сделать заказ. Цифры должны идти после тестового ключевого слова. Теперь у меня есть тесты, которые снова проходят / не проходят!

Ваш вопрос не дает большого количества деталей. Что произвело выход выше? EXEC tSQLt.RunAll или, может быть, EXEC tSQLt.Run 'MyTests'. Следует помнить одну вещь: если у вас уже есть тестовый класс (скажем, "MyTests"), и вы снова запускаете EXEC tSQLt.NewTestClass "MyTests", он удалит все существующие тесты из тестового класса.

Попробуйте это.

EXEC tSQLt.NewTestClass 'MyTests'
GO

CREATE PROCEDURE MyTests.testThisOut
AS
BEGIN
    EXEC tSQLt.Fail 'this should not work'
END
GO

EXEC tSQLt.NewTestClass 'MyTests'
GO

EXEC tSQLt.Run 'MyTests'
GO

Ну, после ночи борьбы я нашел то, что сработало для меня:

Я удалил все свои хранимые процедуры, которые я создал для тестов. (обратите внимание, что их можно найти на карте базы данных в разделе Внешние ресурсы -> Программируемость -> Хранимые процедуры, и тогда они, вероятно, находятся в верхней части списка.)

Затем я снова запустил newTestClass (только эти строки):

EXEC tSQLt.NewTestClass 'testJobs';
GO

Затем я снова запустил все свои хранимые процедуры / тест, например, этот:

CREATE PROCEDURE testJobs.[testing simple UTC]

AS
BEGIN

    DECLARE @sum INT;
    SELECT @sum = 3 + 2;

    EXEC tSQLt.AssertEquals 5, @sum;

END;
GO

Код должен начинаться с "создания процедуры" и заканчиваться "концом"; Строки "go". Выполняйте их по очереди и затем можете выполнить общий тестовый класс с помощью:

EXEC tSQLt.Run 'testJobs';

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

Darcula

В моем случае:

1. С ОШИБКОЙ, ВЫПОЛНЕН 0 ТЕСТОВЫЙ СЛУЧАЙ

EXEC tSQLt.NewTestClass @ClassName = N'BasicTests'  ;
GO
CREATE PROCEDURE [BasicTests].[ test assertEquals]  AS
BEGIN

DECLARE  @expected INT;
 SET @expected=1;
 DECLARE @actual INT ;
 SET @actual=1;
    EXEC tSQLt.AssertEquals @expected, @actual;

END;


GO



EXEC tSQLt.RunALL -- OR EXEC tSQLt.Run '[BasicTests]';  --

=====================

ВЫХОД

(Затронуты 0 строк)

+ ---------------------- + | Сводка выполнения теста |+ ---------------------- +

| Нет | Название тестового набора | Продолжительность (мс)| Результат |

+ - + -------------- + ------- + ------ +

Сводка тестового примера: 0 тестовых случаев выполнено, 0 выполнено успешно, 0 не выполнено, 0 выполнено с ошибками.

2. БЕЗ ОШИБОК, ТЕСТОВЫЙ СЛУЧАЙ ВЫПОЛНЕН - ПРОБЛЕМА В НАИМЕНОВАНИИ ПРОЦЕДУРА ИСПЫТАНИЯ.

EXEC tSQLt.NewTestClass 'testBasic';
GO

CREATE PROCEDURE testBasic.[test assertEquals]
AS
BEGIN
DECLARE  @expected INT;
 SET @expected=1;
 DECLARE @actual INT ;
 SET @actual=1;
    EXEC tSQLt.AssertEquals @expected, @actual;

END;
GO

EXEC tSQLt.RunALL  --OR EXEC tSQLt.Run '[testBasic]'; --

==========================

ВЫХОД

(Затронуты 0 строк)

+ ---------------------- + | Сводка выполнения теста |+ ---------------------- +

| Нет | Название тестового набора | Продолжительность (мс)| Результат |+ - + ------------------------------- + ------- + ------ - +

| 1 | [testBasic]. [Test assertEquals]| 0| Успех |

Сводка тестового примера: 1 тестовый пример выполнен, 1 успешно, 0 не прошел, 0 с ошибками.

Наконец, тестовые классы можно просмотреть или отбросить следующим образом:

ВЫБЕРИТЕ Имя, SchemaId ИЗ tSQLt.TestClasses;

EXEC tSQLt.DropClass 'testBasic'

Другие вопросы по тегам