diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 8eac38520c8a0d2561ee7eaa5f8672f3a2c1c556..48c14623c52d570e0bd4775cbb5c566423b81a81 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -8,6 +8,18 @@ add_executable(
         test_uncertainty.cpp
 )
 
+target_include_directories(
+        evalhyd_tests
+        PRIVATE
+                ${CMAKE_SOURCE_DIR}/src
+)
+
+target_compile_definitions(
+        evalhyd_tests
+        PRIVATE
+            EVALHYD_DATA_DIR="${CMAKE_CURRENT_SOURCE_DIR}/data"
+)
+
 find_package(GTest REQUIRED)
 
 target_link_libraries(
diff --git a/tests/test_determinist.cpp b/tests/test_determinist.cpp
index 0000cbbeb210aaffe9ad3ea72721ea4bc0b3c6f1..ea12693bc3456b87df93ee72aaaa30b04c628499 100644
--- a/tests/test_determinist.cpp
+++ b/tests/test_determinist.cpp
@@ -3,6 +3,7 @@
 #include <tuple>
 #include <array>
 #include <gtest/gtest.h>
+
 #include <xtensor/xtensor.hpp>
 #include <xtensor/xview.hpp>
 #include <xtensor/xmanipulation.hpp>
@@ -10,17 +11,21 @@
 
 #include "evalhyd/evald.hpp"
 
+#ifndef EVALHYD_DATA_DIR
+#error "need to define data directory"
+#endif
+
 using namespace xt::placeholders;  // required for `_` to work
 
 std::tuple<xt::xtensor<double, 2>, xt::xtensor<double, 2>> load_data_d()
 {
     // read in data
     std::ifstream ifs;
-    ifs.open("./data/q_obs.csv");
+    ifs.open(EVALHYD_DATA_DIR "/q_obs.csv");
     xt::xtensor<double, 2> observed = xt::load_csv<int>(ifs);
     ifs.close();
 
-    ifs.open("./data/q_prd.csv");
+    ifs.open(EVALHYD_DATA_DIR "/q_prd.csv");
     xt::xtensor<double, 2> predicted = xt::view(
             xt::load_csv<double>(ifs), xt::range(0, 5), xt::all()
     );
@@ -347,7 +352,7 @@ TEST(DeterministTests, TestBootstrap)
             {{"n_samples", 10}, {"len_sample", 3}, {"summary", 0}};
 
     std::vector<xt::xarray<double>> metrics_bts =
-            eh::evald(
+            evalhyd::evald(
                     xt::view(observed, xt::newaxis(), xt::all()),
                     predicted,
                     metrics,
@@ -372,7 +377,7 @@ TEST(DeterministTests, TestBootstrap)
             xt::concatenate(xt::xtuple(predicted, predicted, predicted), 1);
 
     std::vector<xt::xarray<double>> metrics_rep =
-            eh::evald(
+            evalhyd::evald(
                     xt::view(observed_x3, xt::newaxis(), xt::all()),
                     predicted_x3,
                     metrics
diff --git a/tests/test_probabilist.cpp b/tests/test_probabilist.cpp
index 4583adea463bd1c9834a3b9978408909d196ed87..655a276905323d5b5450e77ad846cf21c41b309e 100644
--- a/tests/test_probabilist.cpp
+++ b/tests/test_probabilist.cpp
@@ -4,23 +4,28 @@
 #include <array>
 #include <gtest/gtest.h>
 #include <xtensor/xtensor.hpp>
+#include <xtensor/xview.hpp>
+#include <xtensor/xsort.hpp>
 #include <xtensor/xmanipulation.hpp>
 #include <xtensor/xcsv.hpp>
 
 #include "evalhyd/evalp.hpp"
 
-using namespace xt::placeholders;  // required for `_` to work
+#ifndef EVALHYD_DATA_DIR
+#error "need to define data directory"
+#endif
 
+using namespace xt::placeholders;  // required for `_` to work
 
 std::tuple<xt::xtensor<double, 1>, xt::xtensor<double, 2>> load_data_p()
 {
     // read in data
     std::ifstream ifs;
-    ifs.open("./data/q_obs.csv");
+    ifs.open(EVALHYD_DATA_DIR "/q_obs.csv");
     xt::xtensor<double, 1> observed = xt::squeeze(xt::load_csv<int>(ifs));
     ifs.close();
 
-    ifs.open("./data/q_prd.csv");
+    ifs.open(EVALHYD_DATA_DIR "/q_prd.csv");
     xt::xtensor<double, 2> predicted = xt::load_csv<double>(ifs);
     ifs.close();
 
@@ -318,7 +323,7 @@ TEST(ProbabilistTests, TestMissingData)
         {{ 4.7, 4.3, NAN, 2.7, 4.1 }};
 
     std::vector<xt::xarray<double>> metrics_nan =
-        eh::evalp(
+        evalhyd::evalp(
                 observed_nan,
                 forecast_nan,
                 metrics,
@@ -337,7 +342,7 @@ TEST(ProbabilistTests, TestMissingData)
         {{ 4.7, 4.3, 2.7 }};
 
     std::vector<xt::xarray<double>> metrics_pp1 =
-        eh::evalp(
+        evalhyd::evalp(
                 observed_pp1,
                 forecast_pp1,
                 metrics,
@@ -355,7 +360,7 @@ TEST(ProbabilistTests, TestMissingData)
         {{ 4.3, 2.7, 4.1 }};
 
     std::vector<xt::xarray<double>> metrics_pp2 =
-        eh::evalp(
+        evalhyd::evalp(
                 observed_pp2,
                 forecast_pp2,
                 metrics,
@@ -410,7 +415,7 @@ TEST(ProbabilistTests, TestBootstrap)
             {{"n_samples", 10}, {"len_sample", 3}, {"summary", 0}};
 
     std::vector<xt::xarray<double>> metrics_bts =
-            eh::evalp(
+            evalhyd::evalp(
                     xt::view(observed, xt::newaxis(), xt::all()),
                     xt::view(predicted, xt::newaxis(), xt::newaxis(), xt::all(), xt::all()),
                     metrics,
@@ -433,7 +438,7 @@ TEST(ProbabilistTests, TestBootstrap)
             xt::concatenate(xt::xtuple(predicted, predicted, predicted), 1);
 
     std::vector<xt::xarray<double>> metrics_rep =
-            eh::evalp(
+            evalhyd::evalp(
                     xt::view(observed_x3, xt::newaxis(), xt::all()),
                     xt::view(predicted_x3, xt::newaxis(), xt::newaxis(), xt::all(), xt::all()),
                     metrics,
diff --git a/tests/test_uncertainty.cpp b/tests/test_uncertainty.cpp
index 091e74a35e56d4100344c9f3f28d9aab3ffefbbf..1bfb312240310b6ec5fe3849b65127644394c9e6 100644
--- a/tests/test_uncertainty.cpp
+++ b/tests/test_uncertainty.cpp
@@ -1,5 +1,6 @@
 #include <unordered_map>
 #include <gtest/gtest.h>
+
 #include <xtensor/xtensor.hpp>
 #include <xtensor/xrandom.hpp>
 #include <xtensor/xio.hpp>