如何在没有 Rake 的情况下运行完整的 MiniTest 套件?

2024-01-03

看着这个问题 https://stackoverflow.com/questions/4788288/how-to-run-all-the-tests-with-minitest已经,这或多或少反映了我目前运行整个套件的方式。

此外,我还设置了以下 rake 任务:

Rake::TestTask.new do |t|
  t.name = "spec:models"
  t.libs << "test"
  t.pattern = "spec/models/*_spec.rb"
end

但我注意到当我使用它运行时time rake spec:models,它在大约 2.36 秒内完成。如果我使用该目录运行所有单独的测试ruby /path/to/spec.rb(目前所有文件都与 ActiveRecord 隔离——还没有持久性,所以超级快),它们的累计总用户时间是 2.36 秒,但我也注意到,虽然每个文件从开始到结束执行需要 0.4 用户秒,但实际的“ MiniTest 报告的“test”时间要快得多(这样我的整个套件在加载依赖项后,应该在不到 0.15 秒的时间内执行,而不是 2.36 秒)。

示例(对于一个规范文件):

Started

11/11:         100% |======================================| Time: 00:00:00

Finished in 0.02223s
11 tests, 15 assertions, 0 failures, 0 errors, 0 skips
ruby path/to/spec.rb  0.43s user 0.06s system 88% cpu 0.559 total

我怀疑 Rake 在每次测试执行之间重新加载库,这就是额外时间的原因。我是否可以验证这一点,或者在不使用 Rake 的情况下运行我的整个套件?

顺便说一句,当我之前说“用户时间”时,我指的是通过前置输出的第一个数字time到我的 ruby​​ 命令来运行单个测试文件,所以time ruby /path/to/spec.rb = ruby path/to/spec.rb 0.43s user 0.06s system 88% cpu 0.559 total


创建文件spec.rb在项目的顶层目录中:

$:<<'spec'  # add to load path
files = Dir.glob('spec/**/*.rb') 
files.each{|file| require file.gsub(/^spec\/|.rb$/,'')}  

Run it:

ruby spec.rb

如果这对您有用,您可以重命名spec.rb文件,或者将其移动到更好的位置,或者根据需要更改加载路径等。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在没有 Rake 的情况下运行完整的 MiniTest 套件? 的相关文章

随机推荐

  • 从文件中读取行而不在末尾添加“\n”[重复]

    这个问题在这里已经有答案了 我的文件是 xml txt 包含以下内容 books xml news xml mix xml 如果我使用 readline 函数 它会在所有文件的名称处附加 n 这是一个错误 因为我想打开 xml txt 中包
  • 安装Facebook修改的referrer参数值

    I used Google Play 安装引荐来源网址在我的 android 应用程序中并使用以下参数并生成URL正如所描述的 utm source utm medium utm content utm campaign 我编写了自己的自定
  • 如何高效抽分

    我的程序接收 PCL 点云并使用以下方法一一绘制每个点 glBegin GL POINTS glVertex3f point x point y point z glEnd 它可以工作 但由于点数量较多 程序速度相当慢 有没有更有效的方法来
  • 使用 .htaccess 重定向站点但排除两个以上文件夹

    根据这个answer https stackoverflow com a 3414030 3817111 您可以从重定向中排除单个子文件夹 如下所示 RewriteEngine on RewriteRule uploads http exa
  • 使用 Proguard 混淆 ORMLite 模型类

    我想在代码中混淆一些模型 我知道我可以忽略整个模型包 但我不想这样做 我尝试了一些混淆器调整并检查了所有相关帖子 但无济于事 ORMlite 不断抛出java lang RuntimeException Unable to create a
  • Flutter 中何时使用 setState?

    作为 flutter 的新手 使用时对我来说非常困惑setState in Flutter应用 在下面的代码中布尔值searching和变量resBody里面用的setState 我的问题是为什么只searching and resBody
  • Rails update_attribute

    我遇到了以下问题 我有一个名为 用户 的模型 其中有一列名为 已激活 我试图用激活的方法更新该值 但它给了我错误 验证失败 密码不能为空 密码太短 最少为 6 个字符 这对我来说没有意义 因为我没有接触密码字段 我只想更新激活的列 我把代码
  • 正则表达式匹配第一次出现*之后*出现的所有字符?

    例如 如果我尝试匹配输入字符串中的 w 爱德华 伍德沃德 第二个单词中的两个 w 应该匹配 而不是第一个单词中的两个 w 我有一种暗示 该解决方案可能涉及 消极后视 但只是无法获得任何可行的解决方案 我正在使用 Objective C 和正
  • 类型解构

    我的数据类型始终至少有两个参数 最后两个参数始终分别为 q 和 m LANGUAGE TypeFamilies FlexibleContexts UndecidableInstances TypeOperators DataKinds Co
  • R 传单突出显示选项

    我使用以下命令突出显示 R 传单上的一行 library leaflet m leaflet gt addTiles group OpenStreetMap x lt c 1 5 4 8 y lt c 1 3 4 7 data sp Spa
  • 麦克风检测 Actionscript 3

    我在检测是否检测到麦克风时遇到一些问题 我正在运行该函数Microphone getMicrophone 那应该返回null如果没有连接麦克风 或者用户在安全面板上单击了 拒绝 对吗 我面临的问题是 在某些没有安装麦克风的计算机上 Micr
  • 从并行流捕获异常

    我有一堆列作为 csv 文件中的字符串数组 现在我想解析它们 由于此解析需要日期解析和其他不太快的解析技术 因此我正在考虑并行性 我对其进行了计时 这需要一些时间 我的简单方法 Stream of columns parallel forE
  • 自定义相对布局不显示子视图

    我正在尝试创建一个包含两个 imageView 的自定义相对布局 一个图像视图出现在整个屏幕上 另一个图像视图出现在第一个图像视图的左上角 后来我在活动的 xml 文件中使用这个自定义视图 但是 以下代码不会在显示屏上显示任何内容 任何视图
  • AWS Glue:如何在输出中添加包含源文件名的列?

    有谁知道如何将源文件名添加为粘合作业中的列 我们创建了一个流程 在其中抓取 S3 中的一些文件以创建架构 然后 我们编写了一个作业 将文件转换为新格式 并将这些文件以 CSV 形式写回另一个 S3 存储桶 以供管道的其余部分使用 我们想要做
  • Rust:有没有办法使用 map 来缩短 if/else 代码?

    我很难如何使用地图 如下所示 为什么 Rust 需要 if let 语法 https stackoverflow com questions 27534364 why does rust need the if let syntax 有没有
  • 使用页码作为输入从现有 pdf 中剪辑并创建新 pdf - pdfbox

    我有一个 10 页的 pdf 文件 我需要将第 2 页剪切到第 5 页并创建一个新的 pdf 我正在做的事情如下 PDDocument pddDocument PDDocument load new File sample pdf PDFT
  • 冲突的 UNMET 依赖地狱 angular@2 / rxjs zone.js

    我相信我已经事先成功解决了此类问题 或多或少遵循了这个流行问题中概述的方法 https stackoverflow com a 35738361 108350 https stackoverflow com a 35738361 10835
  • 如何使用 KCachegrind 和 Callgrind 只测量部分代码?

    我想用valgrind分析我的代码 问题是 我有一个我不感兴趣的巨大启动序列 我在中找到了定义valgrind callgrind h这应该对我有帮助 CALLGRIND START INSTRUMENTATION CALLGRIND ST
  • 将 TouchDelegate 扩展到视图的父级之外

    我有一个如下所示的布局 我正在尝试扩大绿色视图的可点击区域 我用于此目的的代码是 public static void setTouchDelegate View view float dimen final View parent Vie
  • 如何在没有 Rake 的情况下运行完整的 MiniTest 套件?

    看着这个问题 https stackoverflow com questions 4788288 how to run all the tests with minitest已经 这或多或少反映了我目前运行整个套件的方式 此外 我还设置了以