perl - 有没有办法在测试运行之间将 perl 测试数据保存在内存中?

标签 perl testing

当我通过 prove 运行我的测试用例时,在第一次测试运行之前加载我的测试数据大约需要 20 - 25 秒。有没有一种方法可以让一个单独的持久进程将测试数据加载到内存中,并证明每次运行测试时都能立即检索一个副本?

我知道我可以让一个单独的进程返回 JSON/XML,但随后必须对其进行解析。我想知道是否可以有另一个进程返回对数据结构的引用。

最佳答案

如果您谈论的是单独的程序调用 - 不,没有办法做到这一点。内存在进程内拥有,并在进程结束后销毁。

做你想做的事情的唯一方法是:

  • 让父进程“加载”数据。
  • fork 子进程

这意味着“加载”的数据将保留在内存中 - fork 对每个子项使用写时复制(因此,如果它不改变,您将不会使用更多完全没有内存)。 但是每个 child 都可以访问相同的“内存空间”。

或者,您可以使用 Storable - 或者:

  • 使用storeretrieve 将您的数据结构写入磁盘(或/tmp)。
  • 使用freezethaw 将数据作为标量传递。

关于perl - 有没有办法在测试运行之间将 perl 测试数据保存在内存中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28150028/

相关文章:

perl - Rijndael Perl 中的 CBC 加密解密

java - 软件测试

java - 用于测试的 hibernate 配置 -(新手哇)

perl - 如果我的 Web 框架想要支持 PSGI,我是否需要将 mod_rewrite 规则转换为 Plack::Middleware::Rewrite 规则?

perl - 这是构建Perl子例程的方法吗?

linux - 从 Linux 日志文件中学习

unit-testing - 创建易于维护的测试

performance - 更快的替代评估?

ruby-on-rails-3 - 如何使用 rspec 和 factory girl 设置我的身份验证数据?

c++ - 为什么 BOOST_AUTO_TEST_CASE 不起作用?