【问题标题】:How to use tSQLt to test if a integer value is within a specific range?如何使用 tSQLt 测试整数值是否在特定范围内?
【发布时间】:2021-10-21 20:47:46
【问题描述】:

我正在使用tSQLt unit testing tool。我想测试实际行数是否在预期值的 0.1% 以内。好像我可以使用EXEC tSQLt.AssertIntValueInRange 程序,但我找不到这样的东西。我会满足于自己编写逻辑并有条件地调用EXEC tSQLt.FailAssertion,但显然这也不存在。

有人可以建议如何使用 tSQLt 检查整数值是否在预期值的 x% 范围内吗?

【问题讨论】:

    标签: sql-server tsqlt


    【解决方案1】:

    您必须自己进行比较逻辑,但这很容易。您可以定义一个 BIT 变量,在 SQL 中进行比较,然后断言 BIT 变量的值:

    DECLARE @IsWithinRange BIT;
    DECLARE @RowCount DECIMAL(18,2);
    DECLARE @Threshold INT = 1000;
    
    SELECT @RowCount = CONVERT(DECIMAL(18,2), COUNT(*)) FROM MyTable;
    
    SET @IsWithinRange = IIF(@RowCount/@Threshold <= .1, 1, 0);
    
    EXEC tsqlt.AssertEquals @exptected = 1, @actual = @IsWithinRange;
    

    【讨论】:

      【解决方案2】:

      实际上,有一个 tSQLt.Fail 可以用于此目的。 here’s the documentation.

      但是,在单元测试中追求行数通常会导致测试难以阅读和维护,同时对于证明被测模块是否按设计工作几乎没有价值。

      在您的测试中提供特定数据是一种更好的方法(使用tSQLt.FakeTable 更容易),然后使用tSQLt.AssetEqualsTable 将实际结果内容与预期结果进行比较。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-29
        • 1970-01-01
        • 1970-01-01
        • 2018-07-28
        • 1970-01-01
        • 1970-01-01
        • 2011-12-09
        • 1970-01-01
        相关资源
        最近更新 更多