Khi sử dụng Python, tôi thực hiện kiểm tra mã với các công cụ như vùng phủ python và đặc biệt đối với django gói djaango-mũi, tôi đang tìm kiếm tương đương trong Erlang. Tôi đã làm thử nghiệm với eunit và tạo báo cáo của tôi với surefire nhưng tôi không tìm thấy cách để thực hiện bảo vệ mã, có ai biết công cụ hoặc phương pháp để thực hiện việc này không?Cách thực hiện kiểm tra đơn vị trong Erlang
Trả lời
Nếu bạn rebar
chỉ cần thêm:
{cover_enabled, true}.
để kiểm tra chung rebar.config
Tôi đã sử dụng để điều khiển các dãy phòng thử nghiệm, sau đó trong spec kiểm tra bạn có thể tuyên bố một spec bìa với tuple {bìa, "coverspec path"}:
{include, ["../include"]}.
{suites,"../test", all}.
{logdir,"../results"}.
{cover,"../test/reduce.coverspec"}.
bìa đặc tả chủ yếu là xác định mức độ chi tiết và danh sách các mô-đun bạn muốn phân tích:
{level, details}.
{incl_mods, [calc,calc_store]}.
sau đó khi bạn chạy thử nghiệm bạn nhận được một trang web gia tăng, với tất cả các lần lặp kiểm tra rằng nơi thực hiện, và cho mỗi kết quả và liên kết đến các bản tóm tắt vùng phủ sóng và sau đó mã nguồn của bạn chú thích với các số lượng thời gian là một dòng được đánh giá.
và nguồn chú thích:
File generated from d:/documents and Settings/xxxxxxx/My Documents/git/calc/ebin/../src/calc_store.erl by COVER 2012-06-01 at 10:23:45
****************************************************************************
| -module(calc_store).
|
| -behaviour(gen_server).
|
| -record(state,{var,func}).
| -define(SERVER,?MODULE).
|
| %% gen_server call back
| -export([code_change/3,handle_call/3,handle_cast/2,handle_info/2,init/1,terminate/2]).
|
| %% api
| -export([start_link/0,storevar/2,storefunc/4,getvalue/1,getfunc/1,stop/0]).
|
| %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
| storevar(Name,Value) ->
1..| gen_server:cast(?MODULE,{storevar,Name,Value}).
|
| storefunc(Name,Par,Desc,Text) ->
3..| gen_server:cast(?MODULE,{storefunc,Name,Par,Desc,Text}).
|
| getvalue(Name) ->
67..| gen_server:call(?MODULE,{readvar,Name}).
|
| getfunc(Name) ->
10..| gen_server:call(?MODULE,{readfunc,Name}).
|
| stop() ->
0..| gen_server:cast(?MODULE,stop).
|
| start_link() ->
1..| gen_server:start_link({local, ?SERVER}, ?MODULE, [], []).
|
| %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
| init([]) ->
| %% register(?MODULE,self()),
1..| {ok,#state{var=dict:new(),func=dict:new()}}.
|
| handle_call({readvar,Name}, _From, State = #state{var=D}) ->
67..| Reply = dict:find(Name,D),
67..| {reply, Reply, State};
| handle_call({readfunc,Name}, _From, State = #state{func=F}) ->
10..| Reply = dict:find(Name,F) ,
10..| {reply, Reply, State};
| handle_call(Request, From, State) ->
0..| io:format("calc_store received call: ~p from ~p~n",[Request,From]),
0..| Reply = ok,
0..| {reply, Reply, State}.
|
| handle_cast(stop,State) ->
0..| {stop,State};
| handle_cast({storevar,Name,Value}, State = #state{var=D}) ->
1..| NewD= dict:store(Name,Value,D),
1..| {noreply, State#state{var=NewD}};
| handle_cast({storefunc,Name,Par,Desc,Text}, State = #state{func=F}) ->
3..| NewF= dict:store(Name,{Par,Desc,Text},F),
3..| {noreply, State#state{func=NewF}};
| handle_cast(Msg, State) ->
0..| io:format("calc_store received cast: ~p~n",[Msg]),
0..| {noreply, State}.
|
| handle_info({'EXIT',_P,shutdown},State) ->
0..| {stop,State};
| handle_info(Msg,State) ->
0..| io:format("calc_state received info: ~p~n",[Msg]),
0..| {noreply,State}.
|
| terminate(_Reason, _State) ->
0..| ok.
|
| code_change(_OldVsn, State, _Extra) ->
0..| {ok, State}.
Xin chào, chúng tôi đang thực sự chạy thử nghiệm EUnit với rebar2 và, bạn có biết nếu có thể nhận dữ liệu về vùng phủ sóng mà không có ** thử nghiệm phổ biến ** không? –
Tôi chưa từng nghe về rebar2. Nếu bạn đang nói về rebar3, một tính năng kiểm tra có sẵn bằng cách sử dụng tùy chọn '{cover_enabled, true}' và chạy các thử nghiệm với lệnh 'rebar3 eunit --cover'. Xem [rebar3] (https://www.rebar3.org/docs/running-tests). Nhưng tôi đã không sử dụng nó. – Pascal
Cảm ơn bạn! Đó là lo lắng. :) –
- 1. Kiểm tra đơn vị không xuất hiện
- 2. Tư vấn kiểm tra đơn vị - cách kiểm tra đơn vị của bạn .asmx
- 3. Làm cách nào để thực hiện kiểm tra đơn vị tự động trong các gói SSIS?
- 4. Đơn vị kiểm tra RedirectToRouteResult
- 5. Kiểm tra đơn vị CSS
- 6. Đơn vị kiểm tra TSQL
- 7. DAO Kiểm tra đơn vị
- 8. Kiểm tra đơn vị Scala
- 9. kiểm tra đơn vị trong C++
- 10. Kiểm tra đơn vị trong asp.net
- 11. NSHomeDirectory trong iPhone đơn vị kiểm tra
- 12. Kiểm tra đơn vị XCode
- 13. Đơn vị kiểm tra destructors?
- 14. Làm cách nào để thực hiện các kiểm tra đơn vị Silverlight từ dòng lệnh
- 15. Làm cách nào để bạn thực hiện kiểm tra đơn vị khi kết quả thay đổi?
- 16. Kiểm tra đơn vị EJB
- 17. Kiểm tra đơn vị XSLT
- 18. Kiểm tra đơn vị CacheManager
- 19. Thực hiện `kiểm tra` hoặc 'thực hiện kiểm tra'
- 20. Kiểm tra đơn vị XQuery
- 21. Làm thế nào để thực hiện kiểm tra đơn vị trong pyCharm
- 22. Kiểm tra Đơn vị & Log4net
- 23. Kiểm tra đơn vị Khung thực thể với Mock IDbSet
- 24. Kiểm tra đơn vị JSPs
- 25. Đếm số truy vấn được thực hiện bởi NHibernate trong một bài kiểm tra đơn vị
- 26. Cách giữ đầu ra kiểm tra đơn vị trong Jenkins
- 27. Mới để kiểm tra đơn vị
- 28. Kiểm tra đơn vị - Những gì không để kiểm tra
- 29. Thực hành tốt nhất/quy ước để viết các bài kiểm tra đơn vị Erlang sử dụng eunit
- 30. g ++ -fsyntax chỉ đơn vị kiểm tra
tôi không sử dụng cốt thép vì nó chưa đóng gói trong Debian, thích không cài đặt nó mà không cần gói, cảm ơn vì câu trả lời của bạn – Rodolphe
Tôi tìm thấy câu trả lời này cố gắng để kích hoạt bảo hiểm mã cho các bài kiểm tra phổ biến. Nếu bạn đang ở trong cùng một chiếc thuyền, bạn có thể phải tạo một tệp bổ sung để thử nghiệm phổ biến để hoạt động: http://stackoverflow.com/a/28969406/301857 –