`
poller
  • 浏览: 19757 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

EUnit 基本使用

阅读更多
EUnit是一个对Erlang轻量級的单元測試框架.

一、如何在Erlang中应用EUnit?

1、引入EUnit的头文件,分3种方法(任选其一).
(1). 在要用单元測試的每一个module中引入
-include_lib("eunit/include/eunit.hrl").
(2). 启动Eralng時指定Eunit路径
erlc -pa "path/to/eunit/ebin" $(ERL_COMPILE_FLAGS) -o$(EBIN) $<
(3). 在$HOME/.erlang中加入 code:add_path("/path/to/eunit/ebin").
2、写一个简单的測試方法.
新建一个module,名字定为eunit_start.写一个方法reverse_test()->lists:reverse([1,2,3]).此時编译执行eunit_start:test().相应的測試結果就出来了.(注:此module不用export任何方法,test方法为EUnit内部机制实现的).test方法会調用以_test結尾的方法.
其实test方法会調用_test和_test_結尾的方法.两者不同点在于_test_結尾的方法会把測試方法放入一个List中依次执行.

二、应用EUnit macros进行測試

EUnit的头文件(eunit.hrl)中定义了一系列的macros,通过这些macros可以让我們的单元測試更加简洁易读.

基本的macros(Basic macros)

_test(Expr)正如macros定义的一样 -define(_test(Expr), {?LINE, fun () -> (Expr) end}).

断言的macros(Assert macros)

assert(BoolExpr) 用法:?assert(f(X, Y) =:= [])
assertNot(BoolExpr)
assertMatch(GuardedPattern, Expr)
用法: ?assertMatch({found, {fred, _}}, lookup(bloggs, Table))
?assertMatch([X|_] when X > 0, binary_to_list(B))
assertEqual(Expect, Expr)
用法: ?assertEqual("b" ++ "a", lists:reverse("ab"))
?assertEqual(foo(X), bar(Y))
assertException(ClassPattern, TermPattern, Expr)
assertError(TermPattern, Expr)
assertExit(TermPattern, Expr)
assertThrow(TermPattern, Expr)
用法: ?assertError(badarith, X/0)
?assertExit(normal, exit(normal))
?assertException(throw, {not_found,_}, throw({not_found,42}))
分享到:
评论

相关推荐

    rebar exemplar 例子

    这个文件通常包含项目的基本信息,如源代码路径、依赖库以及编译选项等。例如,一个简单的`rebar.config`可能如下所示: ```erlang {deps, [ {example_dep, ".*", {git, ...

    Email:一个基本的 Erlang 邮件服务器

    “Email:一个基本的 Erlang 邮件服务器”表明这是一个使用Erlang编程语言构建的邮件服务器项目,其主要功能是处理SMTP(Simple Mail Transfer Protocol)协议,实现邮件的发送和接收。 **描述分析:** 描述中提到...

    rebar生成erlang release 并进行热代码升级

    在深入探讨如何使用rebar工具生成Erlang release并进行热代码升级之前,我们首先需要了解如何使用rebar来创建一个基本的Erlang OTP项目。 ##### 第1步:创建项目目录 在开始前,你需要准备一个用于存放项目的空...

    erlang open poker 最好的入门程序源码

    9. **测试驱动开发**:Erlang社区非常重视测试,源码可能包含EUnit或PropEr等测试框架的用例,展示如何为Erlang代码编写测试。 通过深入研究这个开源项目,你不仅可以掌握Erlang语言的基本用法,还能理解并发和...

    gleam_combiner:实验解析器组合器

    使用`gleam_combiner`,你需要定义一系列基本的解析器,这些解析器可以是简单的字符匹配,如数字、字母或者特定符号。然后,通过组合这些基础解析器,可以构建出能处理更复杂语法的解析器。例如,你可以创建一个解析...

    Erlang中文基礎教程

    Erlang提供了调试工具如observer和tracer,以及单元测试框架如eunit和ct(Common Test),便于进行代码调试和测试。 ### 9. 实战应用 Erlang在实时通信、分布式计算、物联网等领域有着广泛应用,比如著名的开源...

    dlpfp.rar_Delphi_

    这包括设置数据源、建立连接、执行 SQL 语句、处理数据记录等基本操作。同时,这也是一种跨平台数据库访问的方法,因为 Jet Engine 不仅限于 Access,还可以用于其他支持 OLE DB 的应用。对于 Delphi 开发者来说,...

    嵌入式软件测试手册全集

    首先,我们要理解嵌入式软件测试的基本概念。嵌入式软件测试是指对运行在特定硬件平台上的软件进行的测试活动,其目标是发现并修复潜在的错误、缺陷和问题,以确保软件的可靠性和稳定性。与传统的通用软件测试相比,...

    erlang实战IP查询服务

    - 使用Erlang自带的测试工具进行单元测试(eunit)和集成测试(common_test)。 5. **部署上线**: - 打包项目为Erlang release版本。 - 部署至生产环境。 #### 六、项目特色 - **高效性**: Erlang语言本身具有高度...

    proper-testing.github.io

    此外,网站还可能提供了有关如何调试和优化测试的建议,以及与其他测试工具(如Eunit和CT)的比较。 属性测试的核心思想是将测试看作是对程序行为的断言,而不仅仅是对特定输入的验证。PropEr通过随机生成大量数据...

    erlang 深度分析

    - **单元测试**: 利用`eunit`框架编写单元测试,确保代码质量。 - **代码规范**: 遵循社区约定的代码风格和命名规则,提高代码可读性。 #### 4. 工具介绍 - **调试工具**: - `debugger`: 提供了断点、单步执行等...

    erlang程序设计(第二版)随书源码

    1. **基本语法**:Erlang的语法简洁明了,包括原子(Atoms)、列表、元组、映射(Maps,自Erlang OTP 17.0引入)等数据类型,以及函数定义、模块结构等。 2. **模式匹配**:Erlang中的模式匹配是其强大之处,它允许...

    exercism_erlang

    1. **基本语法**:学习Erlang的变量、数据类型(如原子、整数、浮点数、列表、元组、字串、二进制、空列表等)、运算符和控制结构(如if、case、receive等)。 2. **函数和模块**:了解如何定义函数,创建模块,...

    rebar的问题

    首先,我们来看`rebar`的基本用法。`rebar`的主要功能包括: 1. **初始化项目**:`rebar create-app`命令用于创建一个新的Erlang应用,它会生成标准的Erlang应用结构,包含`ebin`、`src`、`include`和`test`目录。 ...

    erlang_etudes

    虽然不是所有练习都会使用Mnesia,但了解它的基本操作和特性能增强你处理数据存储的能力。 9. **热代码升级**:Erlang支持运行时代码替换,使得系统可以在不停止服务的情况下更新代码。在高级练习中,你可能会接触...

    application-gutenberg-generator:应用项目生成器

    3. `src`目录下的`.erl`文件:这里将生成基本的模块示例代码,供开发者参考和修改。 4. `test`目录下的`.erl`和`.eunit`文件:包含测试用例,帮助确保代码质量。 **使用application-gutenberg-generator** 使用`...

    《Erlang程序设计》源码

    《Erlang程序设计》是一本深入探讨Erlang编程...通过学习和研究《Erlang程序设计》的源码,读者不仅可以掌握Erlang的基本语法和特性,还能深入了解其在并发、分布式和容错领域的应用,提升构建大规模并发系统的技能。

    incremental_katas:由 Gianfranco Alongi 设计的增量式套路

    9. **测试**:了解如何使用 EUnit 测试框架编写单元测试,确保代码质量。 10. **并发模式**:掌握常见的并发模式,如工作池、生产者-消费者模型、监控树等,这些模式在 Erlang 中有其独特实现。 通过 `incremental...

Global site tag (gtag.js) - Google Analytics