Я бы хотел хранить тесты каждого модуля в отдельном файле и запускать юнит-тесты одной командой одновременно выполняя как eunit так и proper. При этом мне было не понятно как запускать proper выполняя eunit. Идея писать тест оканчивающийся на _test и в нем выполнять что-то вроде proper:quickcheck мне совсем не нравилась, типа один фреймворк вместо того чтобы гонять тесты дергает другой фреймворк, некрасиво выглядит. Что если создать, например, hrl хелпер содержащий код вроде
-include_lib("eunit/include/eunit.hrl"). run_proper_test_() -> EunitLeader = erlang:group_leader(), erlang:group_leader(whereis(user), self()), Res = proper:module(?MODULE), erlang:group_leader(EunitLeader, self()), ?_assertEqual([], Res).
Код переопределения group leader взят отсюда
В результате получается что в модуле с eunit достаточно подключить наш hrl и все функции начинающиеся с prop_ будут найдены proper’ом и протестированы, eunit же возьмет свои функции и пройдется по ним.