2010-12-05 4 views
5

Emacs를 사용하고 가능한 한 자동화 된 단위 테스트 작업 흐름을 얻으려고합니다. 나는 그것이 작동하도록 설정했지만 Erlang Shell이 ​​나의 변경 사항을 인식하기 전에 테스트를 포함하는 모듈 또는 테스트를 포함하는 모듈을 수동으로 컴파일해야합니다.Erlang으로 단위 테스트를 할 때 모듈 리로딩을 자동화하는 방법은 무엇입니까?

두 파일 mymodule.erlmymodule_tests.erl이 있습니다. 내가 할 수있을 싶은 것은 :

  1. eunit:test(mymodule) 또는 mymodule_tests:test()
  2. 같은 테스트 케이스는
  3. 저장 한 라인으로 얼랑 쉘
  4. 실행 테스트에
  5. 스위치를 mymodule_tests mymodule_tests에 추가
  6. 실제로 테스트를 수행하기 전에 Erlang에서 mymodule 및 mymodule_tests를 다시로드하십시오.

나는 tr 내 자신의 테스트 방법을 작성했지만 작동하지 않습니다.

-module (mytests). 
-export([test/0]). 

-import(mymodule). 
-import(mymodule_tests). 
-import(code). 

test() -> 
    code:purge(mymodule), 
    code:delete(mymodule), 
    code:load_file(mymodule), 
    code:purge(mymodule_tests), 
    code:delete(mymodule_tests), 
    code:load_file(mymodule_tests), 
    mymodule_tests:test(). 

나는 또한 mymodule_tests를 업데이트 할 때 인 MyModule가 자동으로 다시로드 얻을 수 있는지 확인하기 위해 mymodule_tests에 -compile(mymodule).를 넣어하지만 아무 소용이 시도했습니다.

나는 또한 꽤 봤지만 관련 정보를 찾을 수 없습니다. Erlang을 처음 접했을 때 나는 잘못된 용어를 찾고 있다고 생각하고 있습니다. erlang reload module 또는 다른 모듈을 컴파일 할 때 다른 모듈을 다시로드 할 수 없다고 가정하십시오.

+0

'Test = fun (Atom) -> S = atom_to_list (A), c (A), c (S ++ "_ tests"), eunit :을 기본으로하는 커스텀 함수를 .erlang 파일에 작성할 수 있습니다. test (A) end'를 호출하여'Test (module)'라고 부를 수 있으며, 각 테스트 전에 모든 것을 자동으로 컴파일하고 다시 읽어 들일 수 있습니까? –

답변

9

아마도 Erlang make이 도움이 될 수 있습니다. 컴파일 모듈 세트를 지정

이 기능은 처음 Emakefile라는 이름의 파일 의 현재 작업 디렉토리에서 찾습니다

(아래 참조) 컴파일 다음 문서에서 읽기

make:all([load]). 

사용할 옵션. 이러한 파일이 없으면 모듈을 컴파일하면 현재 작업 디렉토리 에있는 모든 모듈이 기본값으로 컴파일됩니다.

그리고 "로드"옵션에 관한 :

로드 모드. 모든 재 컴파일 된 모듈을로드합니다.

확인할 모듈 목록을 지정할 수있는 make:files/1,2도 있습니다.

+1

예! 그건 내가 예상 한대로 작동한다. 감사! –

2

l(mymodule).을 사용하여 컴파일 한 후 모듈을 다시로드 해 보셨습니까?

+0

나는 내가 충분히 명확하지 않았다고 생각한다.'mymodule'과'mymodule_tests'에서 일반적인'C-c C-k' 만하면됩니다. 테스트를 실행하기 전에 Erlang이나 Emacs가 자동으로 모듈을 컴파일 할 수있는 방법을 찾으려고합니다. –

관련 문제