Ошибка компиляции арматуры
Я использую арматуру для выполнения теста eunit с помощью команды "rebar compile eunit", но получаю информацию об ошибке:
==> myapp (compile)
==> myapp (eunit)
src/myapp_app.erl:8: badly formed 'include_lib'
src/myapp_app.erl:26: undefined macro 'assertNot/1'
ERROR: eunit failed while processing /Users/Dao/ErlProject/myapp: rebar_abort
Я действительно не знаю, как это значит, кто может сказать мне, почему?
PS: мой английский плохой, пожалуйста, прости меня
myapp_app.erl вот так:
-ifdef(TEST).
-include_lib(“eunit/include/eunit.hrl”).
-endif.
........
-ifdef(TEST).
simple_test() ->
ok = application:start(myapp),
?assertNot(undefined == whereis(myapp_sup)).
-endif.
и это пришло отсюда: https://github.com/rebar/rebar/wiki/Getting-started
Я следую за шагом, но получил ошибку!
Моя версия на эрланге - R15B03
ОС: OS X Lion
2 ответа
Основываясь на представленном вами коде, я считаю, что проблема связана с двойными кавычками, которые вы используете. Прямо сейчас вы используете какие-то наклонные кавычки, которые, если я сам копирую и вставляю их и использую то же самое определение в тестовом модуле, выдает ту же ошибку.
Вы хотите убедиться, что для ваших двойных кавычек вы используете "нормальные":
"
(ASCII 34) вместо ”
, который является Unicode.
Так что меняй
-include_lib(“eunit/include/eunit.hrl”).
в
-include_lib("eunit/include/eunit.hrl").
Убедитесь, что вы включили eunit следующим образом:
-include_lib("eunit/include/eunit.hrl").
Само собой разумеется, удостоверьтесь, что вы установили eunit вообще. Насколько я помню, он может быть не установлен по умолчанию в некоторых версиях Ubuntu, например.