tSQLt 测试类是具有特殊扩展属性的模式。
Cade Roux重命名模式的最佳解决方案是创建一个新模式,传输所有对象,然后删除旧模式。
如果我们在这里这样做,我们将失去扩展属性。
让我们针对 tSQLt 框架进行调整。
如何重命名 tSQLt 测试类
创建一个新的测试类。
EXECUTE tSQLt.NewTestClass
@ClassName = 'CustomerTests';
您应该在视图中同时看到旧类和新类tSQLt.TestClasses
。
SELECT *
FROM tSQLt.TestClasses;
Name SchemaId
----------------------------------------- ----------
SQLCop 7
BackendLayerCustomerAdministrationTests 10
CustomerTests 14
Cade 使用 Chris Shaffer 的选择变量连接技巧来构建传输语句列表,并打印结果。
DECLARE @sql NVARCHAR(MAX) = N'';
SELECT @sql = @sql +
N'ALTER SCHEMA CustomerTests
TRANSFER BackendLayerCustomerAdministrationTests.' + QUOTENAME(name) + N';' +
CHAR(13) + CHAR(10)
FROM sys.objects
WHERE SCHEMA_NAME([schema_id]) = N'BackendLayerCustomerAdministrationTests';
PRINT @sql;
丑陋,但有效。
复制输出并作为新查询执行。
ALTER SCHEMA CustomerTests
TRANSFER BackendLayerCustomerAdministrationTests.[test uspMaintainCustomer validate merged data];
ALTER SCHEMA CustomerTests
TRANSFER BackendLayerCustomerAdministrationTests.[test uspMaintainCustomerPermissions throws error when PermissionValue is missing or empty];
我在这里只展示了两个测试,但它应该适用于所有测试。
现在放弃旧的测试类。
EXECUTE tSQLt.DropClass
@ClassName = N'BackendLayerCustomerAdministrationTests';
旧班级应该从视野中消失。
SELECT *
FROM tSQLt.TestClasses;
Name SchemaId
----------------------------------------- ----------
SQLCop 7
CustomerTests 14
再次运行所有测试以检查它是否有效。
EXECUTE tSQLt.RunAll;
+----------------------+
|Test Execution Summary|
+----------------------+
|No|Test Case Name |Result |
+--+----------------------------------------------------------------------------+-------+
|1|[CustomerTests].[test uspMaintainCustomer throws error on missing APIKey] |Success|
|2|[CustomerTests].[test uspMaintainCustomerPermissions validate merged data] |Success|
|3|[SQLCop].[test Decimal Size Problem] |Success|
|4|[SQLCop].[test Procedures Named SP_] |Success|
|5|[SQLCop].[test Procedures using dynamic SQL without sp_executesql] |Success|
|6|[SQLCop].[test Procedures with @@Identity] |Success|
|7|[SQLCop].[test Procedures With SET ROWCOUNT] |Success|
-------------------------------------------------------------------------------
Test Case Summary: 7 test case(s) executed, 7 succeeded, 0 failed, 0 errored.
-------------------------------------------------------------------------------
成功!