diff --git a/.travis-build.sh b/.travis-build.sh
index e06a4299bb74a764f9e7940b9ca79138047e07a2..511df04ac62ecf0e2fcebfcf6f8d271a30f106b4 100755
--- a/.travis-build.sh
+++ b/.travis-build.sh
@@ -18,9 +18,16 @@ if [ "$TRAVIS_OS_NAME" = "linux" -o -z "$TRAVIS_OS_NAME" ]; then
     mkdir build && cd build
     cmake -DCITRA_FORCE_QT4=ON ..
     make -j4
+
+    ctest -VV -C Release
 elif [ "$TRAVIS_OS_NAME" = "osx" ]; then
+    set -o pipefail
+
     export Qt5_DIR=$(brew --prefix)/opt/qt5
+
     mkdir build && cd build
     cmake .. -GXcode
-    xcodebuild -configuration Release | xcpretty -c && exit ${PIPESTATUS[0]}
+    xcodebuild -configuration Release | xcpretty -c
+
+    ctest -VV -C Release
 fi
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8f28989734ae4693f7fe17e534d58a6602131734..f7b0af115a016443564ce2dea22a7987b802a715 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -255,6 +255,8 @@ endif()
 
 add_subdirectory(externals/soundtouch)
 
+enable_testing()
+
 add_subdirectory(src)
 
 # Install freedesktop.org metadata files, following those specifications:
diff --git a/appveyor.yml b/appveyor.yml
index e825ff85d7e970e225d38bac71c1a7cf26dd4b60..b2b0ae28bef3c66373426f96dbf94509f51de5ce 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -26,7 +26,10 @@ build:
   project: build/citra.sln
   parallel: true
 
-after_build:
+test_script:
+  - cd build && ctest -VV -C Release
+
+on_success:
     # copying the needed QT Dlls is now done post build. See the CMakeLists.txt file in the citra-qt folder
   - ps: >
         if (!"$env:APPVEYOR_PULL_REQUEST_TITLE" -and ("$env:APPVEYOR_REPO_BRANCH" -eq "master"))
diff --git a/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt
index dc476616c82d76ea78f396146dbc455c97539246..457c55571c907eabea18411f6be8acb09968a07c 100644
--- a/src/tests/CMakeLists.txt
+++ b/src/tests/CMakeLists.txt
@@ -12,3 +12,5 @@ include_directories(../../externals/catch/single_include/)
 add_executable(tests ${SRCS} ${HEADERS})
 target_link_libraries(tests core video_core audio_core common)
 target_link_libraries(tests ${PLATFORM_LIBRARIES})
+
+add_test(NAME tests COMMAND $<TARGET_FILE:tests>)