【问题标题】:I want to run teambuild's unit tests (more than once) against multiple different databases我想针对多个不同的数据库运行 teambuild 的单元测试(不止一次)
【发布时间】:2012-07-16 14:42:24
【问题描述】:

我想针对不同的数据库运行 teambuild 的单元测试(不止一次),例如我想测试我的构建编译,然后针对 SQLServer、Oracle 等数据库运行相同的测试套件。

我很确定我可以做一些笨拙的事情,比如针对第一个配置文件构建/测试然后针对第二个配置文件构建/测试等,但我正在寻找更优雅的东西(最好没有毫无意义的第二次重新编译)。

【问题讨论】:

    标签: unit-testing tfsbuild


    【解决方案1】:

    您需要为每种数据库类型进行单独的单元测试(这些被认为是系统测试,实际上 - 因为它们涉及数据库)。如果同一个单元测试可能在 1 个 DB 平台上失败并通过另一个 DB 平台,那么当您查看通过/失败状态以及该测试随时间推移的测试结果历史记录时,它并不能告诉您任何足够具体的信息。

    否则,请考虑解耦或抽象数据库连接,以便您可以在设置测试时以编程方式更改它(请参阅 MSTEST unit test framework 中的 [ClassInitialize()] 和 [TestInitialize()] 属性)。

    优雅的解决方案是不依赖数据库进行单元测试;为检查您正在调用的查询和过程返回的数据的数据库创建单独的测试。

    Visual Studio 2010 Premium 有 capability of running unit tests to verify data and behaviour of SQL Server 2005 (and later) DBs。如果您还找不到测试 Oracle Dbs 的工具或推出自己的系统来测试返回的内容,我会感到惊讶(ndbUnit 之类的东西可能会有所帮助)

    【讨论】:

    • 感谢您的回答。我们解耦了......我们有一个单独测试的 DAL,它针对我们支持的每个数据库进行测试,之后经过测试,尽管我更高兴看到剩余的测试通过每个数据库。
    • 如果您能分享您所拥有/提出的模式示例以造福社区,那就太好了,因为我注意到其他人在堆栈交换站点中也有类似的问题;您也可以将其发布在 Code Review 上并获得一些有价值的反馈!
    猜你喜欢
    • 1970-01-01
    • 2011-04-06
    • 2017-03-09
    • 1970-01-01
    • 1970-01-01
    • 2017-07-15
    • 2021-04-20
    • 2018-09-12
    • 2021-07-25
    相关资源
    最近更新 更多