问题标签 [tsqlt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
207 浏览

error-logging - tSQLt AssertResultSetsHaveSameMetaData 在 SQLTest 中截断响应消息

我正在尝试使用 tSQLtAssertResultSetsHaveSameMetaData从返回大量列的查询中检查元数据。

当它失败时,详细说明“预期/但是”详细信息的消息将被截断,因此我无法通过这两条信息来查看问题所在。有没有办法输出消息以使其不被截断(例如,到文件)?

0 投票
1 回答
144 浏览

sql-server - tSQLt - OneTimeSetup

有谁知道是否可以使用 tSQLt 执行一次性设置?

从我在文档中看到的内容来看,TestClass Mechanism 有一个 SetUp SP,它在每个测试执行之前运行,但我在 NUnit 中看不到 OneTimeSetup 测试夹具的任何内容。

谢谢

0 投票
1 回答
734 浏览

unit-testing - 如何让 tSQLt 测试显示在 Visual Studio 的测试资源管理器中?

我似乎无法让我的 tSQLt 测试显示在 Visual Studio 测试资源管理器中。

我有一个数据库项目 (SSDT),其中包含我想要测试的数据库。我在解决方案中还有另一个数据库项目,其名称与主数据库项目相同,但已.Tests附加到名称的末尾。该.Tests项目包含对主数据库项目的数据库引用。

我在数据库中运行了 tSQLt 的安装脚本,可以看到数据库中 tSQLt 的所有存储过程。

我已经从 Visual Studio 的扩展和更新对话框安装了tSQLt 测试适配器扩展。我正在使用 Visual Studio 2015 更新 3。

我创建了一个.runsettings文件并通过进入Test > Test Settings > Select Test Settings File适配器指令状态来选择它。这是该文件的内容(我在这篇文章中删除了连接字符串的详细信息,但我已经验证了我的连接字符串在其他地方有效):

当我构建解决方案时,我在测试资源管理器窗口中看不到任何测试。关于我可以尝试解决此问题的任何想法?

0 投票
1 回答
529 浏览

sql-server - 为什么在 Visual Studio 测试资源管理器中应该失败的 tSQLt 测试会通过?

我正在编写一些 tSQLt 测试并通过tSQLt 测试适配器扩展使用 Visual Studio 的测试资源管理器运行它们。我正在做TDD,所以我在编写它测试的存储过程之前编写测试。

问题是,当我运行测试时,它应该会失败,因为存储过程还不存在。当我在 Sql Server Management Studio 中使用 tSQLt 运行测试时,它会失败:

但是当我在测试资源管理器中运行它时,它说测试通过了:

测试资源管理器截图

这是测试的代码:

这是dbo.Customer表格:

编辑-我已将测试修改为仅调用tSQLt.Fail

测试在 Sql Server Management Studio 中仍然失败,但在测试资源管理器中通过。

0 投票
1 回答
132 浏览

sql - tSQLt 的 SQLCop 测试 - 新

有一个关于将 SQLCop 存储过程作为 tSQLt 测试的问题。这个请求得到了 Dropbox 的链接和一个 zip 文件的回答。但是,该链接不再起作用。RedGate 页面也指相同的 DropBox 链接。

我想知道是否仍然可以获得这些存储过程,或者是否有比以前更严格的许可证。

之前讨论的链接: SQLCop 测试 tSQLt

0 投票
1 回答
495 浏览

sql - tSqlt - 使用模式集合输出 XML 的单元测试程序

我们目前正在为一个需要 XML 有效负载的集成项目开发 SQL 存储过程,我们已经使用 Schema Collections 实现了它,以确保严格遵守定义的模式。

我们想为这些存储过程编写单元测试,但鉴于输出是 XML,我不确定如何(或是否)可以使用 tsqlt 中的断言存储过程来执行此操作(无需将所有内容转换为表/表变量。 )

有人可以指出我正确的方向吗 - 是否可以/不能完成,如果不可能,我应该如何尝试为 XML 有效负载创建新的资产存储过程?

或者,我们是否可以通过简单地将 XML 中的预期和实际结果转换为每个测试中的表格来节省大量时间/心痛?

谢谢

0 投票
1 回答
131 浏览

sql-server - 使用 tSQLt 测试唯一过滤索引

目前我正在尝试测试具有唯一过滤索引的表。到目前为止,我发现的唯一建议是使用 CONSTRAINT 而不是像SPtSQLt那样使用索引。ApplyConstraint但是我无论如何都找不到如何进行过滤约束...有什么建议吗?

0 投票
0 回答
105 浏览

tsql - PrepareTableForFaking 无法删除索引

(完全披露,虽然我是一个相当有经验的 .NET 开发人员,但 t-sql 对我来说仍然是新的。)

我试图在一个相当庞大的数据库上实现 tSQLt,有 10 年的数据,我遇到了一个又一个的障碍。

首先,问题出在 SchemaBinding,导致我来到这里:http ://tech.4pi.si/2015/01/tsqlt-faketable-fails-with-error-cannot.html

现在已经到位,我得到的错误是:

我已经确认该索引确实存在,并且我相当确定我对我的本地实例具有权限,接下来让我认为它可能类似于以下内容:即使删除了约束,也不允许显式 DROP INDEX

你们中有人知道伪造 Schema-bound 表的解决方案吗?有可能完成这项工作吗?我只是SOL吗?

谢谢。

0 投票
2 回答
377 浏览

sql-server - TSQLT 测试运行超时

我最近开始通过 Redgate 的 SQL 测试使用 TSQLT 来创建和运行单元测试。我遇到了一个问题。需要超过几分钟才能执行的单元测试将超时,这会停止所有其他单元测试的执行。

如何延长 tSQLt 的超时时间?

我的“单元测试”可能实际上不是单元测试,但我不熟悉另一种更适合的测试方法。

我正在开展一个项目,以提高我们数据仓库的夜间刷新速度。目前,这个过程需要五个小时。通过重新安排任务以尽可能并行运行,我将时间缩短到两个小时。我的问题是,除非我能找到一种方法来证明新流程与旧流程具有完全相同的最终结果,否则 QA 将在接下来的一年中检查每个表中每一行的每一列中的每个值。要么那个,要么这个项目将因为“太难”而被废弃。

所以我想出的测试是这样的:我有一个数据库,在使用我创建的新方法在我们的测试环境中处理结果表之后,我在其中运行一个脚本来复制结果表。然后,回到测试环境,我运行旧进程来更新表。然后,我对每个表运行一个单元测试,以证明使用新方法处理的归档表的内容与使用旧方法重新处理的表的内容完全相同。

不幸的是,由于其中一些表的大小(数百万行),一些单元测试正在超时。以下是我收到的错误:

测试程序:[HR360_unitTest1].[HR360_DW_Job6].[test fact_group_clients Identical Contents] on emr\preprod System.Data.SqlClient.SqlException (0x80131904):超时已过期。在操作完成之前超时时间已过或服务器没有响应。---> System.ComponentModel.Win32Exception (0x80004005):等待操作在 System.Data.SqlClient.SqlConnection.OnError 处超时(SqlException 异常,布尔 breakConnection,Action`1 wrapCloseInAction)在 System.Data.SqlClient.SqlInternalConnection.OnError System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) 在 System.Data.SqlClient.TdsParser 的(SqlException 异常,布尔型 breakConnection,Action`1 wrapCloseInAction)。1 completion, Int32 timeout, Task& task, Boolean asyncWrite) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource在 RedGate.SQLTest.tSQLt.FrameworkWrapper.#kz(SqlCommand #LGj) 在 RedGate.SQLTest.tSQLt 的 System.Data.SqlClient.SqlCommand.ExecuteNonQuery() 的 1 完成,字符串 methodName,布尔 sendToPipe,Int32 超时,布尔 asyncWrite)。 FrameworkWrapper.#7qHc(String #2xAd, SqlParameter[] #LvPb) at RedGate.SQLTest.tSQLt.FrameworkWrapper.#qd4b(String #LGxc) at RedGate.SQLTest.tSQLt.TestRunner.Execute(SqlConnection connection) ClientConnectionId:519569ed-03ce -4510-b226-9ff18e0f1d8d 错误号:-2,状态:0,类:11

如果无法增加 tSQLt 的超时时间,那么我将不得不寻找另一种方法来自动测试这些表的内容是否相同(以可随意重复的方式)或放弃该项目。

0 投票
1 回答
3202 浏览

sql-server - 消息 8114,级别 16,状态 5,第 3 行将数据类型 varchar 转换为浮点数时出错

我正在尝试应用我的脚本的 where 子句

然后我得到错误

消息 8114,级别 16,状态 5,第 3
行将数据类型 varchar 转换为浮点数时出错

当我注释掉时[svs check],一切都很好。所以问题出在[svs check]. 请帮忙。