diff --git a/CHANGELOG b/CHANGELOG
index 8470bda3e07f8074f46b9185f5d4a79b2e00e03d..a7fb0b57af43b2a3deafec8db522ddb42ddf0cab 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,5 +1,8 @@
 BornAgain-1.17.99, work in progress
 
+  > Internal refactoring:
+    1) Unit tests now under CTest control, no longer enforced during compilation
+
 BornAgain-1.17.0, released 2020.06.16
   > API changes:
     1) Add Nevot-Croce roughness model.
diff --git a/Tests/UnitTests/Core/CMakeLists.txt b/Tests/UnitTests/Core/CMakeLists.txt
index 070f4f29d48bf9c08acf3b81f380f20653209a20..d698befdded4d3a9c7021d0bf84c0885a87e0b41 100644
--- a/Tests/UnitTests/Core/CMakeLists.txt
+++ b/Tests/UnitTests/Core/CMakeLists.txt
@@ -1,6 +1,5 @@
-############################################################################
-# Core unit tests
-############################################################################
+include(GoogleTest)
+
 set(test UnitTestCore)
 
 include_directories(${CMAKE_SOURCE_DIR}/Tests/UnitTests/utilities)
@@ -11,5 +10,4 @@ file(GLOB include_files "*/*.h")
 add_executable(${test} ${source_files} ${include_files})
 target_link_libraries(${test} ${BornAgainCore_LIBRARY} gtest)
 
-# add execution of TestCore just after compilation
-add_custom_target(${test}_run ALL DEPENDS ${test} COMMAND ${test})
+gtest_discover_tests(${test} TEST_PREFIX Core:Unit:)
diff --git a/Tests/UnitTests/Fit/CMakeLists.txt b/Tests/UnitTests/Fit/CMakeLists.txt
index 2cd1c801d2a9777ece16e386986fb63e435bc140..c73c57d5d0768d45df50e6e2ffbbe0c099c1a3f7 100644
--- a/Tests/UnitTests/Fit/CMakeLists.txt
+++ b/Tests/UnitTests/Fit/CMakeLists.txt
@@ -1,6 +1,4 @@
-############################################################################
-# Fit unit tests
-############################################################################
+include(GoogleTest)
 
 set(test UnitTestFit)
 
@@ -12,5 +10,4 @@ file(GLOB include_files "*.h")
 add_executable(${test} ${source_files} ${include_files})
 target_link_libraries(${test} ${BornAgainFit_LIBRARY} gtest)
 
-# add execution of TestCore just after compilation
-add_custom_target(${test}_run ALL DEPENDS ${test} COMMAND ${test})
+gtest_discover_tests(${test} TEST_PREFIX Fit:Unit:)
diff --git a/Tests/UnitTests/GUI/CMakeLists.txt b/Tests/UnitTests/GUI/CMakeLists.txt
index a40e9e5d68c534bd8d36cbe728dae475878a2e79..d4d10ca47653356c5f89051946e101c811cc4ff4 100644
--- a/Tests/UnitTests/GUI/CMakeLists.txt
+++ b/Tests/UnitTests/GUI/CMakeLists.txt
@@ -1,6 +1,4 @@
-############################################################################
-# GUI unit tests
-############################################################################
+include(GoogleTest)
 
 set(test UnitTestGUI)
 
@@ -17,5 +15,4 @@ add_executable(${test} ${source_files} ${include_files})
 target_link_libraries(${test} ${BornAgainGUI_LIBRARY} gtest)
 target_link_libraries(${test} Qt5::Core Qt5::Test)
 
-# add execution of TestCore just after compilation
-add_custom_target(${test}_run ALL DEPENDS ${test} COMMAND ${test})
+gtest_discover_tests(${test} TEST_PREFIX GUI:Unit:)
diff --git a/Tests/UnitTests/Numeric/CMakeLists.txt b/Tests/UnitTests/Numeric/CMakeLists.txt
index d47fd29072b51a5f60fdaa10b95cd7bdcb557d7d..e7e7fb8103dbfaa481dd4ef533d854a06ee47c9d 100644
--- a/Tests/UnitTests/Numeric/CMakeLists.txt
+++ b/Tests/UnitTests/Numeric/CMakeLists.txt
@@ -1,6 +1,5 @@
-############################################################################
-# Core unit tests
-############################################################################
+include(GoogleTest)
+
 set(test UnitTestNumeric)
 
 if(MSVC)
@@ -18,6 +17,4 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
     target_compile_options(${test} PUBLIC "-Wno-deprecated-copy")
 endif()
 
-# Registering in ctest section
-add_test(${test} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${test})
-set_tests_properties(${test} PROPERTIES LABELS "Fullcheck")
+gtest_discover_tests(${test} TEST_PREFIX Numeric:)