diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 631f577..0726dce 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -13,41 +13,43 @@
 include_directories(SYSTEM ${CMOCKA_INCLUDE_DIR})
 include_directories(${PROJECT_BINARY_DIR})
 
-set(tests)
-set(tests_wraps)
-add_subdirectory(utests)
+function(ly_add_utest)
+    cmake_parse_arguments(ADDTEST "" "NAME;WRAP" "SOURCES" ${ARGN})
+    set(TEST_NAME utest_${ADDTEST_NAME})
 
-foreach(test_id IN LISTS tests)
-    message(STATUS ${test_id})
-    string(REGEX REPLACE "([a-z]*):.*" "\\1" category "${test_id}")
-    string(REGEX REPLACE "[a-z]*:(.*)" "\\1" path "${test_id}")
-    string(REGEX REPLACE "[a-z:/]*test_(.*)" "\\1" name "${test_id}")
-    set(test_name ${category}_${name})
-    add_executable(${test_name} ${category}s/${path}.c $<TARGET_OBJECTS:yangobj>)
+    add_executable(${TEST_NAME} ${TEST_SOURCES} $<TARGET_OBJECTS:yangobj>)
+    foreach(TEST_SOURCE ${ADDTEST_SOURCES})
+        message(STATUS "SRC: ${CMAKE_CURRENT_SOURCE_DIR}/${TEST_SOURCE}")
+        target_sources(${TEST_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/${TEST_SOURCE})
+    endforeach()
 
-	# Set common attributes of all tests
-    target_link_libraries(${test_name} ${CMOCKA_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${PCRE2_LIBRARIES} m)
+    # Set common attributes of all tests
+    set_target_properties(${TEST_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/tests")
+    target_link_libraries(${TEST_NAME} ${CMOCKA_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${PCRE2_LIBRARIES} m)
     if (NOT APPLE)
-        list(GET tests_wraps 0 test_wrap)
-        set_target_properties(${test_name} PROPERTIES LINK_FLAGS "${test_wrap}")
-        list(REMOVE_AT tests_wraps 0)
+        if (ADDTEST_WRAP)
+            set_target_properties(${TEST_NAME} PROPERTIES LINK_FLAGS "${ADDTEST_WRAP}")
+        endif()
     endif()
-    add_test(NAME ${test_name} COMMAND ${test_name})
+
+    add_test(NAME ${TEST_NAME} COMMAND ${TEST_NAME})
 #    set_property(TEST ${test_name} PROPERTY ENVIRONMENT "LIBYANG_EXTENSIONS_PLUGINS_DIR=${CMAKE_BINARY_DIR}/src/extensions")
 #    set_property(TEST ${test_name} APPEND PROPERTY ENVIRONMENT "LIBYANG_USER_TYPES_PLUGINS_DIR=${CMAKE_BINARY_DIR}/src/user_types")
-    set_property(TEST ${test_name} APPEND PROPERTY ENVIRONMENT "MALLOC_CHECK_=3")
+    set_property(TEST ${TEST_NAME} APPEND PROPERTY ENVIRONMENT "MALLOC_CHECK_=3")
 
     if(ENABLE_VALGRIND_TESTS)
         if(VALGRIND_FOUND)
-            add_test(${test_name}_valgrind valgrind --leak-check=full --show-leak-kinds=all --suppressions=${PROJECT_SOURCE_DIR}/tests/ld.supp --error-exitcode=1
-               ${CMAKE_BINARY_DIR}/tests/${test_name})
+            add_test(${TEST_NAME}_valgrind valgrind --leak-check=full --show-leak-kinds=all --suppressions=${PROJECT_SOURCE_DIR}/tests/ld.supp --error-exitcode=1
+               ${CMAKE_BINARY_DIR}/tests/${TEST_NAME})
 #            set_property(TEST ${test_name}_valgrind PROPERTY ENVIRONMENT "LIBYANG_EXTENSIONS_PLUGINS_DIR=${CMAKE_BINARY_DIR}/src/extensions")
 #            set_property(TEST ${test_name}_valgrind APPEND PROPERTY ENVIRONMENT "LIBYANG_USER_TYPES_PLUGINS_DIR=${CMAKE_BINARY_DIR}/src/user_types")
         else(VALGRIND_FOUND)
             message(WARNING "valgrind executable not found! Disabling memory leaks tests.")
         endif(VALGRIND_FOUND)
     endif(ENABLE_VALGRIND_TESTS)
-endforeach()
+endfunction(ly_add_utest)
+
+add_subdirectory(utests)
 
 if(ENABLE_COVERAGE)
     # Destination
diff --git a/tests/utests/CMakeLists.txt b/tests/utests/CMakeLists.txt
index 9a5905a..19b3950 100644
--- a/tests/utests/CMakeLists.txt
+++ b/tests/utests/CMakeLists.txt
@@ -1,48 +1,22 @@
-set(local_tests
-    utest:test_common
-    utest:test_set
-    utest:test_hash_table
-    utest:test_inout
-    utest:test_context
-    utest:test_xml
-    utest:test_xpath
-    utest:test_yanglib
-    utest:schema/test_schema
-    utest:schema/test_parser_yang
-    utest:schema/test_parser_yin
-    utest:schema/test_tree_schema_compile
-    utest:schema/test_printer_yang
-    utest:schema/test_printer_yin
-    utest:data/test_tree_data
-    utest:data/test_new
-    utest:data/test_parser_xml
-    utest:data/test_printer_xml
-    utest:data/test_validation
-    utest:data/test_types
-    utest:extensions/test_metadata
-    utest:extensions/test_nacm)
-set(local_tests_wraps
-    "-Wl,--wrap=realloc"
-    " "
-    " "
-    " "
-    " "
-    " "
-    " "
-    " "
-    " "
-    " "
-    " "
-    " "
-    " "
-    " "
-    " "
-    " "
-    " "
-    " "
-    " "
-    " "
-    " "
-    " ")
-set(tests ${tests} ${local_tests} PARENT_SCOPE)
-set(tests_wraps ${tests_wraps} ${local_tests_wraps} PARENT_SCOPE)
+ly_add_utest(NAME common WRAP "-Wl,--wrap=realloc" SOURCES test_common.c)
+ly_add_utest(NAME set SOURCES test_set.c)
+ly_add_utest(NAME hash_table SOURCES test_hash_table.c)
+ly_add_utest(NAME inout SOURCES test_inout.c)
+ly_add_utest(NAME context SOURCES test_context.c)
+ly_add_utest(NAME xml SOURCES test_xml.c)
+ly_add_utest(NAME xpath SOURCES test_xpath.c)
+ly_add_utest(NAME yanglib SOURCES test_yanglib.c)
+ly_add_utest(NAME schema SOURCES schema/test_schema.c schema/test_schema_common.c schema/test_schema_stmts.c)
+ly_add_utest(NAME parses_yang SOURCES schema/test_parser_yang.c)
+ly_add_utest(NAME parses_yin SOURCES schema/test_parser_yin.c)
+ly_add_utest(NAME tree_schema_compile SOURCES schema/test_tree_schema_compile.c)
+ly_add_utest(NAME printer_yang SOURCES schema/test_printer_yang.c)
+ly_add_utest(NAME printer_yin SOURCES schema/test_printer_yin.c)
+ly_add_utest(NAME tree_data SOURCES data/test_tree_data.c)
+ly_add_utest(NAME new SOURCES data/test_new.c)
+ly_add_utest(NAME parser_xml SOURCES data/test_parser_xml.c)
+ly_add_utest(NAME printer_xml SOURCES data/test_printer_xml.c)
+ly_add_utest(NAME validation SOURCES data/test_validation.c)
+ly_add_utest(NAME types SOURCES data/test_types.c)
+ly_add_utest(NAME metadata SOURCES extensions/test_metadata.c)
+ly_add_utest(NAME nacm SOURCES extensions/test_nacm.c)
diff --git a/tests/utests/schema/test_schema.c b/tests/utests/schema/test_schema.c
index 559b193..ffb7195 100644
--- a/tests/utests/schema/test_schema.c
+++ b/tests/utests/schema/test_schema.c
@@ -12,6 +12,8 @@
  *     https://opensource.org/licenses/BSD-3-Clause
  */
 
+#include "test_schema.h"
+
 #include <stdarg.h>
 #include <stddef.h>
 #include <stdio.h>
@@ -20,23 +22,17 @@
 
 #include <string.h>
 
-#include "../../../src/common.h"
-#include "../../../src/context.h"
-#include "../../../src/log.h"
-#include "../../../src/parser_yin.h"
-#include "../../../src/tree_schema.h"
-#include "../../../src/tree_schema_internal.h"
-#include "../../../src/xml.h"
+#include "config.h"
+#include "log.h"
+#include "parser_schema.h"
+#include "tree_schema.h"
 
+#if ENABLE_LOGGER_CHECKING
 
 #define BUFSIZE 1024
 char logbuf[BUFSIZE] = {0};
 int store = -1; /* negative for infinite logging, positive for limited logging */
 
-/* set to 0 to printing error messages to stderr instead of checking them in code */
-#define ENABLE_LOGGER_CHECKING 1
-
-#if ENABLE_LOGGER_CHECKING
 static void
 logger(LY_LOG_LEVEL level, const char *msg, const char *path)
 {
@@ -82,20 +78,34 @@
 void
 logbuf_clean(void)
 {
+#if ENABLE_LOGGER_CHECKING
     logbuf[0] = '\0';
+#endif
 }
 
-#if ENABLE_LOGGER_CHECKING
-#   define logbuf_assert(str) assert_string_equal(logbuf, str)
-#else
-#   define logbuf_assert(str)
-#endif
+LY_ERR
+test_imp_clb(const char *UNUSED(mod_name), const char *UNUSED(mod_rev), const char *UNUSED(submod_name),
+             const char *UNUSED(sub_rev), void *user_data, LYS_INFORMAT *format,
+             const char **module_data, void (**free_module_data)(void *model_data, void *user_data))
+{
+    *module_data = user_data;
+    *format = LYS_IN_YANG;
+    *free_module_data = NULL;
+    return LY_SUCCESS;
+}
 
 /**
- * INCLUDE OTHER SCHEMA TESTS
+ * DECLARE OTHER SCHEMA TESTS
  */
-#include "test_schema_common.c"
-#include "test_schema_stmts.c"
+/* test_schema_common.c */
+void test_getnext(void **state);
+void test_date(void **state);
+void test_revisions(void **state);
+void test_typedef(void **state);
+
+/* test_schema_stmts.c */
+void test_identity(void **state);
+void test_feature(void **state);
 
 int main(void)
 {
diff --git a/tests/utests/schema/macros.h b/tests/utests/schema/test_schema.h
similarity index 78%
rename from tests/utests/schema/macros.h
rename to tests/utests/schema/test_schema.h
index 4a0424f..b6f1929 100644
--- a/tests/utests/schema/macros.h
+++ b/tests/utests/schema/test_schema.h
@@ -11,8 +11,29 @@
  *
  *     https://opensource.org/licenses/BSD-3-Clause
  */
-#ifndef TESTS_UTESTS_SCHEMA_MACROS_H_
-#define TESTS_UTESTS_SCHEMA_MACROS_H_
+#ifndef TESTS_UTESTS_SCHEMA_TEST_SCHEMA_H_
+#define TESTS_UTESTS_SCHEMA_TEST_SCHEMA_H_
+
+#include "config.h"
+#include "log.h"
+#include "parser_schema.h"
+
+/* set to 0 to printing error messages to stderr instead of checking them in code */
+#define ENABLE_LOGGER_CHECKING 1
+
+#if ENABLE_LOGGER_CHECKING
+    extern char logbuf[];
+#   define logbuf_assert(str) assert_string_equal(logbuf, str)
+#else
+#   define logbuf_assert(str)
+#endif
+
+void logbuf_clean(void);
+
+LY_ERR test_imp_clb(const char *UNUSED(mod_name), const char *UNUSED(mod_rev), const char *UNUSED(submod_name),
+                    const char *UNUSED(sub_rev), void *user_data, LYS_INFORMAT *format,
+                    const char **module_data, void (**free_module_data)(void *model_data, void *user_data));
+
 
 #define TEST_YANG_MODULE_10(MOD_NAME, MOD_PREFIX, MOD_NS, CONTENT) \
     "module "MOD_NAME" { namespace "MOD_NS"; prefix "MOD_PREFIX"; "CONTENT"}"
@@ -69,4 +90,4 @@
 #define TEST_STMT_SUBSTM_ERR(CTX, RFC7950, STMT, SUBSTMT, VALUE); \
         TEST_SCHEMA_ERR(CTX, RFC7950, 0, "inv", STMT" test {"SUBSTMT" "VALUE";}", "Invalid keyword \""SUBSTMT"\" as a child of \""STMT"\". Line number 1.");
 
-#endif /* TESTS_UTESTS_SCHEMA_MACROS_H_ */
+#endif /* TESTS_UTESTS_SCHEMA_TEST_SCHEMA_H_ */
diff --git a/tests/utests/schema/test_schema_common.c b/tests/utests/schema/test_schema_common.c
index 9b2bc6b..1623905 100644
--- a/tests/utests/schema/test_schema_common.c
+++ b/tests/utests/schema/test_schema_common.c
@@ -20,7 +20,14 @@
 
 #include <string.h>
 
-static void
+#include "context.h"
+#include "log.h"
+#include "tree_schema.h"
+#include "tree_schema_internal.h"
+
+#include "test_schema.h"
+
+void
 test_getnext(void **state)
 {
     *state = test_getnext;
@@ -138,7 +145,7 @@
     *state = NULL;
     ly_ctx_destroy(ctx, NULL);
 }
-static void
+void
 test_date(void **state)
 {
     *state = test_date;
@@ -169,7 +176,7 @@
     *state = NULL;
 }
 
-static void
+void
 test_revisions(void **state)
 {
     (void) state; /* unused */
@@ -198,17 +205,7 @@
     LY_ARRAY_FREE(revs);
 }
 
-LY_ERR test_imp_clb(const char *UNUSED(mod_name), const char *UNUSED(mod_rev), const char *UNUSED(submod_name),
-                    const char *UNUSED(sub_rev), void *user_data, LYS_INFORMAT *format,
-                    const char **module_data, void (**free_module_data)(void *model_data, void *user_data))
-{
-    *module_data = user_data;
-    *format = LYS_IN_YANG;
-    *free_module_data = NULL;
-    return LY_SUCCESS;
-}
-
-static void
+void
 test_typedef(void **state)
 {
     *state = test_typedef;
diff --git a/tests/utests/schema/test_schema_stmts.c b/tests/utests/schema/test_schema_stmts.c
index eab21c9..a588e42 100644
--- a/tests/utests/schema/test_schema_stmts.c
+++ b/tests/utests/schema/test_schema_stmts.c
@@ -20,10 +20,14 @@
 
 #include <string.h>
 
-#include "macros.h"
+#include "log.h"
+#include "context.h"
+#include "test_schema.h"
+#include "tree_schema.h"
 
+#include "test_schema.h"
 
-static void
+void
 test_identity(void **state)
 {
     *state = test_identity;
@@ -136,7 +140,7 @@
 }
 
 
-static void
+void
 test_feature(void **state)
 {
     *state = test_feature;
