【问题标题】:How do I create automated tests for an Oracle procedure?如何为 Oracle 过程创建自动化测试?
【发布时间】:2011-11-01 19:09:25
【问题描述】:

背景 -

我有一个客户,它有一个 Oracle 数据库,其中包含许多包含业务逻辑的过程和函数。作为一个“优秀”的开发人员,我喜欢让我的所有业务逻辑都围绕它进行自动化测试。

使用嵌套 if 的过程非常长。它根据传入的数据和从数据库中检索的数据访问许多表和视图。

我最初的想法是创建一个仅包含 NUnit 测试的 c# 应用程序,该测试将使用数据库中已有的数据来测试过程。一旦我有 100% 的代码覆盖率,我将修改这些测试以插入/清理测试数据。完成后,我可以根据需要重构和修改过程,而不必担心会破坏某些内容。

是否有更好/更简单的方法来对 Oracle 过程/包/函数进行自动化测试?

编辑:此时我无法使用需要在服务器上安装的东西。

【问题讨论】:

标签: c# oracle unit-testing nunit


【解决方案1】:

您可以使用已经提到的针对 PL/SQL 的测试框架之一 - 这可能是解决您的问题的最简单方法。

如果您真的想推出自己的解决方案,PL/SQL 过程/函数很容易从 .NET 调用,因此您可以使用 xUnit 作为运行器:

  • 真正的关键是确保您能够为每个测试设置一个特定的已知输入场景。您可以将自己的方法用于此解决方案(sql 脚本、自定义配置文件、在代码中创建数据),或使用旨在将数据库重置为特定于每个测试的初始已知状态的现有框架(例如 NDbUnit) .

  • 编写一个小型包装库,让您可以轻松调用您的过程,使测试更具可读性和简洁性。

  • 为确保您的测试不会留下痕迹并且您会陷入测试依赖关系和排序问题,您可以将事务作为测试的一部分 - 在 [SetUp] 方法中启动事务,回滚[拆解]。

【讨论】:

    【解决方案2】:

    有一个用于 PL/SQL utPLSQL 的单元测试框架,您可以使用它在数据库中进行所有测试。

    【讨论】:

    • 感谢您的回答。我现在已经看过了,不能使用必须安装在服务器上的东西。我已经用这些信息编辑了我的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-10
    相关资源
    最近更新 更多