diff --git a/test/eunit_ide.erl b/test/eunit_ide.erl
new file mode 100644
index 0000000000000000000000000000000000000000..9a522f0eab943bf80f947d38abc25360740e3918
--- /dev/null
+++ b/test/eunit_ide.erl
@@ -0,0 +1,18 @@
+-module(eunit_ide).
+
+-export([test/1, test/2]).
+
+-define(INFINITE_TIMOUT, 31536000). %% 365*24*60*60, a year in seconds
+
+test(Tests) ->
+    test(Tests, [verbose]).
+
+test(Tests, Options) ->
+    case lists:keytake(timeout, 1, Options) of
+        {value, {timeout, infinite}, NewOptions} ->
+            eunit:test({timeout, ?INFINITE_TIMOUT, Tests}, NewOptions);
+        {value, {timeout, Timeout}, NewOptions} when is_integer(Timeout) ->
+            eunit:test({timeout, Timeout, Tests}, NewOptions);
+        false ->
+            eunit:test(Tests, Options)
+    end.
diff --git a/test/features_test.erl b/test/features_test.erl
new file mode 100644
index 0000000000000000000000000000000000000000..27b3c79609ea110b9b0f2314f7b39cf307e87a3c
--- /dev/null
+++ b/test/features_test.erl
@@ -0,0 +1,17 @@
+-module(features_test).
+
+-include_lib("eunit/include/eunit.hrl").
+
+features_test_() ->
+    setup(),
+    Features =
+        fun() ->
+            filelib:fold_files("features", ".*[.]feature", true, fun(File, Files) -> [File | Files] end, [])
+        end,
+    gurka_eunit:setup(Features, fun teardown/1).
+
+setup() ->
+    ok.
+
+teardown(_) ->
+    ok.