gpt4 book ai didi

unit-testing - EUnit 无法测试私有(private)函数

转载 作者:行者123 更新时间:2023-12-04 05:27:13 24 4
gpt4 key购买 nike

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

我有一个源模块:

-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.
...
...
...

和一个单元测试模块:
-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])它说:
 prob_list_tests: probability_test...*failed*
::undef

但是当我导出 probability/2在我的 prob_list模块,一切正常。

有什么方法可以测试私有(private)函数吗?

最佳答案

您可以使用指令 -compile(export_all)仅有条件地导出所有函数 when compiling for testing :

%% Export all functions for unit tests
-ifdef(TEST).
-compile(export_all).
-endif.

关于unit-testing - EUnit 无法测试私有(private)函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8108624/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com