背景 -
我的客户端有一个Oracle数据库,其中包含许多包含业务逻辑的过程和函数。作为一个“好”的开发人员,我喜欢让我所有的业务逻辑都有自动化测试。
有问题的程序很长,嵌套ifs。它根据传入的数据和从数据库中检索的数据来访问许多表和视图。
我最初的想法是创建一个只包含NUnit测试的c#应用程序,它将使用数据库中已有的数据来测试该过程。一旦我有100%的代码覆盖率,我将修改这些测试以插入/清除测试数据。完成后,我可以根据需要重构和修改程序,而不必担心会破坏某些内容。
是否有更好/更简单的方法对Oracle程序/包/函数进行自动化测试?
编辑:此时我无法使用需要在服务器上安装的内容。
答案 0 :(得分:1)
您可以使用已经提到的PL / SQL目标测试框架之一 - 这可能是解决您问题的最简单方法。
如果你真的想推出自己的解决方案,PL / SQL procs / functions可以从.NET轻松调用,所以你可以只使用xUnit作为跑步者:
关键是确保您能够为每个测试设置特定的已知输入方案。您可以使用自己的方法来处理此解决方案(sql脚本,自定义配置文件,在代码中创建数据),或使用现有框架将数据库重置为特定于每个测试的初始已知状态(类似{{3} })。
编写一个小包装库,使您可以轻松调用程序,使测试更具可读性和简洁性。
为了确保您的测试不会留下痕迹并且您遇到测试依赖性和排序问题,您可以将事务用作测试的一部分 - 在[SetUp]方法中启动事务,回滚[TearDown中]。
答案 1 :(得分:0)
PL / SQL utPLSQL有一个单元测试框架,您可以用它来完成在数据库内测试的所有内容。