Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 测试与外部系统的交互_Unit Testing_Bash_Integration Testing - Fatal编程技术网

Unit testing 测试与外部系统的交互

Unit testing 测试与外部系统的交互,unit-testing,bash,integration-testing,Unit Testing,Bash,Integration Testing,我有一些与外部系统交互的bash脚本,比如SQL和SVN,我希望能够为它们编写更好的单元测试。例如,针对大型生产数据库的各种类型的数据库备份和恢复 我猜有些人可能会说这是集成测试,而不是单元测试(可以说,在单元测试中,您不应该依赖外部,而应该接触文件系统等)。在这种情况下,创建模拟对象的等价物并不会真正进行太多测试——我希望确保转储和恢复能够实际工作。你会怎么做,你会走多远 仅转储架构,本地还原,然后在安装程序中插入测试数据 您会通过比较文件大小、检查gzip文件类型等来测试归档功能吗 对于这

我有一些与外部系统交互的bash脚本,比如SQL和SVN,我希望能够为它们编写更好的单元测试。例如,针对大型生产数据库的各种类型的数据库备份和恢复

我猜有些人可能会说这是集成测试,而不是单元测试(可以说,在单元测试中,您不应该依赖外部,而应该接触文件系统等)。在这种情况下,创建模拟对象的等价物并不会真正进行太多测试——我希望确保转储和恢复能够实际工作。你会怎么做,你会走多远

  • 仅转储架构,本地还原,然后在安装程序中插入测试数据
  • 您会通过比较文件大小、检查gzip文件类型等来测试归档功能吗
  • 对于这种长时间运行的任务,您将如何测试时间问题?也许保留一个完整的快照以便在本地进行测试
  • 您是否还会为SVN和其他此类依赖项创建本地测试存储库

也许我对这一点的想法是完全错误的——对正式测试来说是全新的。如果是,您将使用什么方法?

如果无法创建运行系统的测试版本,则需要创建数据库和存储库的测试版本

在我们的测试系统上,我们的正常数据库处理脚本从以下内容开始:

case `hostname` in
 *-test) dbname=db1-test ;;
 *)      dbname=db1 ;;
esac
这允许我们的正常生产SQL脚本引用正确的数据库,无论是在生产系统上还是在测试系统上运行(一个以-test结尾)

重要的是让您的正常生产脚本自动适应测试环境


如果没有单独的测试系统,或者没有允许简单dbname选择的约定,那么可以使用环境变量来命名适当的数据库名或respository?RAILs使用RAILs_环境变量来实现这一点。

如果无法创建运行系统的测试版本,则需要创建数据库和存储库的测试版本

在我们的测试系统上,我们的正常数据库处理脚本从以下内容开始:

case `hostname` in
 *-test) dbname=db1-test ;;
 *)      dbname=db1 ;;
esac
这允许我们的正常生产SQL脚本引用正确的数据库,无论是在生产系统上还是在测试系统上运行(一个以-test结尾)

重要的是让您的正常生产脚本自动适应测试环境

如果没有单独的测试系统,或者没有允许简单dbname选择的约定,那么可以使用环境变量来命名适当的数据库名或respository?RAILs通过RAILs\u环境变量实现这一点