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

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

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

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

|Нет|Имя теста|Результат|

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

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


person Michael    schedule 24.07.2013    source источник


Ответы (4)


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

person Michael    schedule 25.07.2013
comment
На самом деле регистр имени не важен (посмотрите tSQLt.Private_RunTestClass) — хорошо, что мы используем PascalCase! - person John McLusky; 30.07.2013

Ваш вопрос не дает большого количества деталей. Что привело к выходу выше? 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
person Andrew    schedule 06.08.2013
comment
Я запустил это, и у него был тот же результат, что и в вопросе. Тесты не проводились. - person Lews Therin; 18.05.2017
comment
У меня такая же проблема... Вы когда-нибудь решили эту проблему? - person Mikeyg36; 16.03.2018
comment
хорошо, согласно этому . agilesql.club/blog/Ed-Elliott/ имена тестов должны начинаться со слова test. Я попробовал это, и теперь я могу запустить тест с помощью RunAll, но когда я пытаюсь запустить тест по имени, он все еще работает. - person Mikeyg36; 16.03.2018
comment
На самом деле проблема с этим сценарием в этом ответе заключается в том, что второй вызов NewTestClass очищает тест testThisOut. Таким образом, реальный ответ здесь таков: 1. Тесты должны начинаться со слова TEST 2. Второй вызов NewTestClass выше должен быть удален. - person Mikeyg36; 16.03.2018
comment
Я знаю, что это старый пост, но я считаю, что причина того, что вы не запускаете тесты с использованием приведенного выше кода, заключается в том, что после создания процедуры есть ошибочный tSQLt.NewTestClass 'MyTests'. Этот дополнительный вызов тестового класса удалит процедуру из схемы. - person Brendan; 16.09.2019

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

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

затем я снова запустил 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';

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

Даркула

person Diorcula    schedule 31.03.2019

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

<сильный>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 FROM tSQLt.TestClasses;

EXEC tSQLt.DropClass 'testBasic'

person rafiquenazir    schedule 23.09.2019