Sql server tSQLt未运行测试

Sql server tSQLt未运行测试,sql-server,tsqlt,Sql Server,Tsqlt,我有一个以前可以工作的安装,但现在看来不行了。想知道是否还有其他人经历过这种情况 曾经运行过的测试现在不需要了。似乎什么也没有发生。输出始终如下所示: +----------------------+ |测试执行摘要| +----------------------+ |否|测试用例名称|结果| +--+--------------+------+ 测试用例摘要:执行了0个测试用例,0个成功,0个失败,0个错误。测试过程必须以所有小写关键字Test开始。[启动名称的测试没有问题。忽略所有其他存储

我有一个以前可以工作的安装,但现在看来不行了。想知道是否还有其他人经历过这种情况

曾经运行过的测试现在不需要了。似乎什么也没有发生。输出始终如下所示:

+----------------------+ |测试执行摘要| +----------------------+

|否|测试用例名称|结果|

+--+--------------+------+
测试用例摘要:执行了0个测试用例,0个成功,0个失败,0个错误。测试过程必须以所有小写关键字Test开始。[启动名称的测试没有问题。忽略所有其他存储过程。代码中演示了这一点,但有人(嗯)决定对测试进行编号以确定顺序。编号需要在test关键字之后。现在我有了通过/失败的测试!

您的问题没有给出太多细节。是什么产生了上面的输出?EXEC tSQLt.RunAll或EXEC tSQLt.Run“MyTests”。需要注意的一点是,如果您有一个测试类是already存在(比如“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(仅以下几行):

然后,我再次逐个运行所有存储过程/测试,例如:

CREATE PROCEDURE testJobs.[testing simple UTC]

AS
BEGIN

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

    EXEC tSQLt.AssertEquals 5, @sum;

END;
GO
代码应该以“create procedure”开头,以“end;go”行结尾。 逐个运行这些测试,然后可以使用以下命令执行total testclass:

EXEC tSQLt.Run 'testJobs';
希望这有帮助

达库拉就我而言:

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行)

+----------------------+ |测试执行摘要| +----------------------+

|无|测试用例名称| Dur(ms)|结果|

+--+--------------+-------+------+ 测试用例摘要:执行了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行)

+----------------------+ |测试执行摘要| +----------------------+

|无|测试用例名称| Dur(ms)|结果| +--+-------------------------------+-------+-------+

|1 |[testBasic]。[test assertEquals]| 0 |成功| 测试用例摘要:执行了1个测试用例,1个成功,0个失败,0个出错。 最后,可以按如下方式查看或删除测试类:

选择Name,SchemaId 来自tSQLt.TestClasses


EXEC tSQLt.DropClass'testBasic'

实际上,名称的大小写并不重要(请查看tSQLt.Private\u RunTestClass)-好消息,因为我们的约定是PascalCase!我运行了这个,它的输出与问题中提到的相同。没有运行任何测试。我遇到了相同的问题…您解决过这个问题吗?根据这个,测试名称需要以单词“test”开头"。我试过了,现在我可以使用RunAll运行测试,但是当我尝试按名称运行测试时,它现在仍在工作。实际上,这个答案中的这个脚本的问题是,第二次调用NewTestClass会清除testThisOut测试。所以这里的真正答案是:1.测试需要从单词test开始。2.第二次调用NewTestClass在ne之上要删除的eds我知道这是一篇旧文章,但我相信您没有使用上述代码运行测试的原因是在创建过程后出现了错误的
tSQLt.NewTestClass'MyTests'
。此额外的测试类调用将从架构中删除该过程。
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]'; --