如何调试使用 rebar3 时运行的 Eunit 测试套件?

2024-01-28

我创建了一个release带有 rebar3 (beta-4) 的应用程序。 添加了一些 eunit 测试并编写了一些代码。

现在我必须调试一个测试用例,看看我必须添加什么才能使实现正常工作。

我找到了一些关于使用的文章dbg从 Erlang 控制台,我找到了如何从 Eunit 编写调试信息。但我需要从我必须测试的代码中获取信息(实际实现(逻辑))。

有没有一种方法可以在以下情况下调试 Erlang 代码(实际源代码,而不是测试代码)rebar3与使用eunit争论?

我在终端中使用跟踪,如下所示:https://aloiroberto.wordpress.com/2009/02/23/tracing-erlang-functions/ https://aloiroberto.wordpress.com/2009/02/23/tracing-erlang-functions/


一种方法是使用rebar3在测试配置文件下运行 shell,然后启动调试器并设置断点等:

$ rebar3 as test shell
...
1> debugger:start().
{ok, <0.67.0>}

这会弹出调试器图形用户界面 http://www.erlang.org/doc/apps/debugger/debugger_chapter.html。一旦调试器设置完毕并准备就绪,就可以在下面运行测试eunit:

2> eunit:test(your_test_module,[verbose]).
======================== EUnit ========================
your_test_module: xyz_test_ (module 'your_test_module')...

假设您在调试器中设置了一个合适的断点,这将会命中它,但是您可能会遇到这种方法的问题:默认情况下,eunit测试会在 5 秒后超时,这不会给您太多时间进行调试。您需要指定一个更长的超时时间 http://erlang.org/doc/apps/eunit/chapter.html#Control对于您的测试,这就是为什么上面的示例显示正在运行的是测试治具 http://erlang.org/doc/apps/eunit/chapter.html#Fixtures named xyz_test_,它用长超时包装了实际测试。这样的装置非常简单:

-include_lib("eunit/include/eunit.hrl").

xyz_test_() ->
    {timeout,3600,
     [fun() -> ?assertMatch(expected_value, my_module:my_fun()), ok end]}.

这里,实际测试的是匿名函数,它匹配来自的返回值my_module:my_fun/0,在此示例中代表正在测试的业务逻辑。此示例装置将测试超时设置为一小时;您当然可以根据您的应用程序的需要进行设置。

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

如何调试使用 rebar3 时运行的 Eunit 测试套件? 的相关文章

  • 当意图过滤器启动时调试应用程序

    我通常通过按 Eclipse 中的小 bug 图标来调试我的应用程序 但现在我在清单中插入了这样的意图过滤器
  • 如何在 Chrome/Safari 中调试 EJS 代码

    我正在将 EJS 模板与 CanJS 一起使用 并正在寻找一种调试我的 EJS 代码的方法 目前 firebug 可以向我显示 EJS 中的语法错误 但在其他浏览器中 我看不到任何内容 我需要非常仔细地检查我的 EJS 文件来解决错误 我在
  • Eclipse 调试器 - 跳转到或仅显示挂起的线程

    我有一个带有很多线程的 Java 应用程序 在调试时 当一个线程中的执行被断点停止时 在所有线程之间滚动以查找挂起的线程是非常烦人的 有没有办法 按钮 快捷键等 跳转到挂起的线程 或者更好 隐藏所有未挂起的线程 我同意这很烦人 而且答案非常
  • 在 GDB 中显示结构体值

    在 GDB 中 给定一个指向结构体的变量 print将显示原始指针值并x将显示指向的原始字节 有什么方法可以显示指向该结构的数据 即字段及其值的列表 print variable 如果这样做 它将在 GDB 中显示该变量的值 您还可以选择显
  • 单步执行 IPython 中的函数

    有没有办法进入 ipython 中函数的第一行 我想象的东西会是这样的 step foo 1 2 运行的ipdb并在第一行设置断点foo 如果我现在想这样做 我必须转到该函数的源代码并添加一个import ipdb ipdb set tra
  • Microsoft Visual Studio 2012 无法在 C# 文件中设置断点

    我安装了 Microsoft Visual Studio Professional 2012 版本 11 0 60610 01 Update 3 调试 C cs 文件时 当我尝试设置断点时 Visual Studio 会显示以下消息 无法在
  • 有没有办法在 Visual Studio 或 MATLAB 中“映射”程序执行顺序?

    我所说的 地图 是指我有一个 主 函数 它调用内部的许多其他程序 我希望能够看到哪个文件首先运行 第二个 第三个等等 基本上 我希望能够请参阅这个大型 OOP 设计程序 创建者没有为其制作 UML 类图 中的依赖项列表和顺序 以帮助破译代码
  • Visual Studio 代码调试器未连接到 SAM 本地

    根据 AWS 文档 我将像这样启动本地 SAM sam local start api d 5858 我的 launch json 中有以下内容 version 0 2 0 configurations name Attach to SAM
  • 当条件满足时如何进入调试模式?

    有没有办法在满足一定条件时进入调试模式 例如 假设我想在以下行进入调试模式i 1变为真 using System namespace ConditionalDebug public class Program public static v
  • 在 Haskell/Yampa 和 HOOD 中调试游戏对象的输出

    我一直坚持使用 Haskell Yampa Arrows with HOOD 为我的游戏对象生成调试输出 我的引擎基本上运行一系列游戏对象 这些对象产生输出状态 线 圆 然后进行渲染 data Output Circle Position2
  • 使用 Julia 的 Debugger.jl - 如何进入类似于 Python 的 pdb.set_trace() 或 ipdb.set_trace() 的调试模式?

    Julia 的新 Debugger jl 很棒 但有时要达到我想要达到的代码中的确切位置有点痛苦 有没有办法可以进入交互式调试模式 类似于 Python 在 pdb set trace 或 ipdb set trace 中的模式 例如 我希
  • 如何使用 PDB 文件

    我听说使用 PDB 文件可以帮助诊断崩溃发生的位置 My basic理解是你给 Visual Studio 源文件 pdb 文件和崩溃信息 来自 Dr Watson 有人可以解释一下这一切是如何运作的 涉及什么吗 谢谢你 PDB 文件将程序
  • 将 erlang shell 作为守护进程/服务运行

    显然 我有一个在 Erlang shell 中运行的 Erlang 程序 我想监视它 这就是我要的 当机器启动时 Erlang shell 应该随之启动 并且在 shell 中运行的程序也应该随之启动 如果 Erlang shell 由于某
  • 如何调试VS2010安装工程?

    如何调试VS2010安装工程 我尝试附加到 msiexec exe 但没 有帮助 我假设您想在安装程序中调试自定义操作 如果是这样 请在运行安装程序时打开解决方案 并将此行代码放在其中一个事件中 System Diagnostics Deb
  • Golang delve,如何启动调试器并启动正在调试的应用程序?

    我正在尝试设置一个可以远程连接的无头深度调试器 我无法找到一种方法来启动调试服务器 而该服务器不会暂停我正在调试的应用程序 我一直在使用dlv attach headless true listen 2345 attach 32但这会暂停该
  • 哪些参数被传递给回溯中的函数?

    在 R 中 如果执行因错误而停止 我可以评估traceback 查看哪个函数发生了错误 哪个函数是从哪个函数调用的 等等 它会给出类似这样的信息 8 ar yw default x aic aic order max order max n
  • Eclipse 调试模式下的 GDB 找不到 stdlib/rand.c

    我试图让 gdb 在 ubuntu 上与 eclipse cdt 一起运行 以开始调试一些简单的程序 所以我做了我认为必要的步骤来让它运行 1 创建可执行项目 2 Compile 3 Run 4 创建文件 gdbinit 并将其放在主项目文
  • 如何使用键盘进入 ruby​​-debug 运行 Rails 应用程序?

    我正在运行 ruby debugbundle exec rdebug script server在 Rails 2 3 上 当我按下Ctrl C 它退出整个程序和调试器 我希望它停止执行程序并将我带入调试器会话 I tried catch
  • 如何远程调试长时间运行的 python 脚本或服务?

    正如标题所说 我希望能够连接到在 Paster 或 uwsgi 下运行的 python 进程并利用 pdb 功能 Using winpdb http winpdb org 您可以像这样附加到正在运行的进程 插入 import rpdb2 r
  • Erlang get_tcp:recv数据长度

    I user gen tcp recv Socket 0 用于数据接收 但我只能接收1次1418字节 我怎样才能收到发送的数据量 in gen tcp recv Socket 0 您正在询问内核 给我接收缓冲区中现在可用的所有数据 不过 内

随机推荐