在 tSQLt 中获得 Nunit 风格的 TestCase() 功能有什么解决方案吗?

2024-05-25

我目前正在寻找使用一些 SQL Server SQL 代码编写一些单元测试tSQLt http://tsqlt.org.

阅读文档后,似乎不支持使用参数调用测试用例,而不是为每个参数组合编写单独的测试用例。(为了这个问题,请先搁置您是否认为将参数传递给测试用例是一个好主意,还是为每个参数组合编写一个单独的测试用例)

例如在NUnit http://nunit.org您可以使用以下命令执行以下操作TestCase https://github.com/nunit/docs/wiki/TestCase-Attribute属性:

[TestCase("", -1, false)]
[TestCase("ACT ", 1, true)]
[TestCase("ACT", 1, true)]
[TestCase("aCT", 1, true)]
[TestCase("AUSTRALIAN CAPITAL TERRITORY", 1, true)]
[Test]
public void DetermineStateIdFromText(string aStateText, long aExpectedStateId, bool aExpectedFound)
{
    //Arrange
    WzDetermineStateIdFromTextInput input = new WzDetermineStateIdFromTextInput
                                            {
                                                StateText = aStateText
                                            };

    //Act
    WzDetermineStateIdFromTextOutput output = _WzLocationMappingService.DetermineStateIdFromText(input);

    //Assert
    output.ResultSuccess.ShouldBeTrue();
    output.Found.ShouldBe(aExpectedFound);
    if (output.Found)
    {
        output.StateId.ShouldBe(aExpectedStateId);
    }
}

(测试方法的内部内容无关紧要,包含在内只是为了完整性。ShouldBe() 调用来自Shouldly https://github.com/shouldly/shouldly如果您想知道断言在哪里。)

有没有人有任何解决方案来在 tSQLt 中提供 TestCase 风格支持?


tSQLt 允许使用不是测试类中的测试用例的存储过程。因此,为了实现您所寻找的目标,我通常创建一个存储过程来接受参数并处理所有测试逻辑。然后我编写了一堆单行测试程序,这些程序调用另一个程序并传入适当的参数。 tSQLt 本身的测试用例中有一些相关示例。

与真正的参数化测试相比,这种方法几乎没有什么缺点,但有一个很大的优点:您可以为每个案例指定一个真正有意义的名称,这将使查找问题变得更加简单。 (真正的参数化测试已积压,但它们不是最高优先级,因此可能需要一段时间才能完成。)

作为旁注,我强烈建议不要自动生成测试甚至测试参数,因为这通常会导致更高的维护成本。由于测试的目标是降低维护代码库的成本,因此会适得其反。我见过很多单元测试采用项目都因为这个原因而失败。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 tSQLt 中获得 Nunit 风格的 TestCase() 功能有什么解决方案吗? 的相关文章

随机推荐

  • 需要澄清 NSAutoreleasePool

    每当我们打电话时autorelease方法 它的对象将是NSAutoreleasePool 当池耗尽时 它会向池中的所有对象发送释放消息 我的问题是 main函数中有一个NSAutoreleasePool 我想知道 当我们调用autorel
  • 如何在 Zend 中使用 cookie?

    如何使用 Zend Http Cookie 来设置和读取 cookie 我尝试像这样设置cookie cookie new Zend Http Cookie TestCookie TestValue localhost com 但没有生成c
  • 使用 django-profiles 以配置文件形式编辑相关模型

    我在用着Django 配置文件 http bitbucket org ubernostrum django profiles wiki Home在我的应用程序中 因为它为我提供了一些简单的视图 可以帮助我更快地到达我想去的地方 但是 我有一
  • Flex HTTPservice 和 POST,发送文件?

    我使用基本的 Post 将数据发送到 Django 服务器 数据由flex动态创建的base64编码的640 380 PNG图像组成 成分
  • 哪些具体用例需要通过 WebSockets 和长轮询使用 BOSH? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 公共领域有哪些替代方案?

    我正在用 java 编写一个游戏 正如问题标题建议的那样 我在类中使用公共字段 暂且 据我所知 公共领域很糟糕 我有一些理解其中的原因 但如果有人能澄清为什么你不应该使用它们 那将不胜感激 问题是 从我所看到的来看 这似乎是合乎逻辑的 是使
  • 你能在 Clojure 中获取加载函数的“代码即数据”吗?

    换一种方式 好吧 代码就是数据 http groups google com group clojure browse thread thread 554cdc59d8a46f01 该线程解决了如何从源文件中读取的问题 但我想知道如何将已加
  • 析构函数、dispose 和 Finalize 方法之间的区别

    我正在研究垃圾收集器在 C 中的工作原理 我对使用感到困惑Destructor Dispose and Finalize方法 根据我的研究和理解 在我的类中拥有析构函数方法将告诉垃圾收集器以析构函数方法中提到的方式执行垃圾收集 该方法不能在
  • 如何使用 C# 调用 REST API?

    这是我到目前为止的代码 public class Class1 private const string URL https sub domain com objects json api key 123 private const str
  • Facebook 帐户工具包已弃用 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 I just saw https developers facebook com blog post
  • sed/awk/bash 用外部文件内容替换两个字符串之间的文本

    我正在编写一个脚本 命令 它将采用 inputFile1 在其中查找特定的开始和结束字符串 并替换它们之间的所有文本 包含 inputFile2 的完整内容 理想情况下 但不是强制性的 这应该不需要转义特殊字符即可工作 因此我可以将字符串放
  • HYBRIS - 组件和插槽如何在 JSP 文件中工作?

    最近我正在使用 Hybris 我无法理解这些组件是如何工作的 我知道如何创建和定义一个 如何将它们添加到我想要的页面等 但我不明白如何使用该标签
  • 服务器端包含与 ASP.NET 技术之间是否存在性能差异?

    我最近受聘更新 ASP NET 1 0 站点 该站点是在母版页可用之前创建的 因此 这些页面有服务器端包含 ssi 例如 我打算使用包含先前在 ssi 中的标记的母版页来更新 aspx 页面 我相信这是正确的做法 特别是从可维护性的角度来看
  • AWS SimpleDB 上属性的最大大小

    我正在构建一个移动应用程序 iPhone Android 并希望将应用程序数据存储到亚马逊的 SimpleDB 上 因为我们不想托管自己的服务器来提供这些服务 我已经浏览了所有文档 元素值的最大存储大小是 1024 字节 就我而言 我们需要
  • 最有用的 jQuery 原生 API 函数

    前 5 10 个最常用的 jQuery 本机 API 函数是什么 请不要建议 jQuery 函数本身 因为毫无疑问这是最常用的函数 如果可能的话 还请提供它们所涵盖的场景 提出这个问题的原因是我尝试创建一个类似 jQuery 的 API充足
  • 如何在 WordPress 中按标题获取帖子?

    Wordpress 3 0 我想通过使用将特定帖子的内容放入页面中title帖子的 据我所知 我不能直接使用get post 我可以假设暴力方式可能是什么 但我怀疑还有更优雅的方式吗 get page by title id OBJECT
  • 跨浏览器兼容音频有哪些选项?

    我正在使用这个功能 function playSound file MyAudio new Audio file MyAudio play 不幸的是 我正在努力寻找一种适用于所有浏览器的文件类型 Mp3 适用于 Chrome Safari
  • 在 PIG 中加载文件时如何忽略“(双引号)?

    我的文件中有以下数据 a b 1 2 a b 4 3 a b 3 1 我正在使用以下命令读取此文件 File1 LOAD path using PigStorage as f1 chararray f2 chararray f3 int f
  • 如何使用 DesignData 帮助开发 Metro 应用程序?

    我一直在 Windows Phone 应用程序中愉快地使用 DesignData 我希望使用它来帮助在 VS2012 Blend for VS 中的 Metro 风格应用程序中可视化设计 我已经尝试过希望显而易见的方法
  • 在 tSQLt 中获得 Nunit 风格的 TestCase() 功能有什么解决方案吗?

    我目前正在寻找使用一些 SQL Server SQL 代码编写一些单元测试tSQLt http tsqlt org 阅读文档后 似乎不支持使用参数调用测试用例 而不是为每个参数组合编写单独的测试用例 为了这个问题 请先搁置您是否认为将参数传