首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EUnit无法测试私有函数

EUnit无法测试私有函数
EN

Stack Overflow用户
提问于 2011-11-13 00:19:53
回答 2查看 1.3K关注 0票数 6

我正在为Erlang代码编写EUnit测试。

我有一个源模块:

代码语言:javascript
复制
-module(prob_list).
-export([intersection/2,union/2]).

probability([], _Item) -> false;
probability([{First,Probability}|Rest], Item) ->
    if
        First == Item -> Probability;
        true          -> probability(Rest, Item)
    end.
...
...
...

和一个单元测试模块:

代码语言:javascript
复制
-module(prob_list_tests).
-include_lib("eunit/include/eunit.hrl").

-define(TEST_LIST,[{3,0.2},{4,0.6},{5,1.0},{6,0.5}]).
-define(TEST_LIST1,[{2,0.9},{3,0.6},{6,0.1},{8,0.5}]).
-define(TEST_UNO_LIST,[{2,0.5}]).

probability_test() -> ?assertNot(prob_list:probability([],3)),
                      ?assertEqual(0.5,prob_list:probability(?TEST_UNO_LIST,2)),
                      ?assertNot(prob_list:probability(?TEST_UNO_LIST,3)),
                      ?assertEqual(0.2,prob_list:probability(?TEST_LIST,3)),
                      ?assertEqual(1.0,prob_list:probability(?TEST_LIST,5)),
                      ?assertNot(prob_list:probability(?TEST_LIST,7)).
...
...
...

当我运行eunit:test(prob_list,[verbose])时,它说:

代码语言:javascript
复制
 prob_list_tests: probability_test...*failed*
::undef

但是,当我在prob_list模块中导出prob_list时,一切正常。

有任何方法测试私有函数吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-13 11:01:52

好的,下面是:

dclements给了我一个很好的提示,告诉我如何完成我的要求。我不想把所有的测试都放在源代码模块中,您可以在这里看到一个很好的分离示例:二郎EUnit -游戏攻略

现在,我的解决方案是导出测试编译中的所有函数。所以你说:

代码语言:javascript
复制
-define(NOTEST, true).

-export([intersection/2,union/2]).
-ifdef(TEST).
-export([intersection/2,union/2,contains/2,probability/2,lesslist/2]).
-endif.

然后用erlc -DTEST *.erl编译来运行测试,而普通编译只导出所需的函数。

票数 3
EN

Stack Overflow用户

发布于 2013-05-30 16:23:08

您可以使用指令-compile(export_all)有条件地导出所有函数,只导出为测试而编译时

代码语言:javascript
复制
%% Export all functions for unit tests
-ifdef(TEST).
-compile(export_all).
-endif.
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8108624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档