diff --git a/include/main.h b/include/main.h
index e6be204a2846497939bdd9bdd8e46b577d3f63d3..2f48969047e1e1be4c7369c245b54ed7626a46f8 100644
--- a/include/main.h
+++ b/include/main.h
@@ -4,6 +4,10 @@
 #include <iostream>
 #include <cstdint>
 
+#ifndef __TEST_RUNNER__
+#define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN
+#endif // __TEST_RUNNER__
+
 
 enum GenerationMethod
 {
diff --git a/makefile b/makefile
index 2b4884920171676f8d55433a107b778e7f85c6fa..36f6a611c6a75cc4f4a2860f885d830b6025ce8c 100644
--- a/makefile
+++ b/makefile
@@ -28,8 +28,11 @@ INC_DIR = include
 
 # Object files directory
 BUILD_DIR = build
+TEST_BUILD_DIR = testBuilds
 
-# Test directory
+# Test Variables
+TEST_FLAG = __TEST_RUNNER__
+TEST_TARGET = $(BIN_DIR)/test_runner
 TEST_DIR = test
 
 # Executable directory
@@ -49,23 +52,21 @@ TEST_FILES = $(wildcard $(TEST_DIR)/**/*.test.cpp $(TEST_DIR)/*.test.cpp)
 
 # Object files
 OBJ_FILES = $(patsubst $(SRC_DIR)/%.cpp,$(BUILD_DIR)/%.o,$(SRC_FILES))
-TEST_OBJ_FILES = $(patsubst $(TEST_DIR)/%.test.cpp,$(BUILD_DIR)/%.o,$(TEST_FILES))
+TEST_OBJ_FILES = $(patsubst $(TEST_DIR)/%.test.cpp,$(TEST_BUILD_DIR)/%.test.o,$(TEST_FILES)) $(patsubst $(SRS_DIR)/%.cpp,$(TEST_BUILD_DIR)/%.o,$(TEST_FILES))
 
 # Define this for running console-only
 CONSOLE_DEFINE = -Dconsole
 
 # Output executable
 TARGET = $(BIN_DIR)/game
-TEST_TARGET = $(BIN_DIR)/test_runner
 
 all: $(TARGET)
 
+test: $(TEST_TARGET)
+
 $(TARGET): $(OBJ_FILES)
 	$(CXX) $(CXXFLAGS) -o $(TARGET) $(OBJ_FILES) $(SDL_LIBRARY) $(SDL_OPTIONS)
 
-console: $(OBJ_FILES)
-	$(CXX) $(CXXFLAGS) -o $(TARGET) $(OBJ_FILES) $(CONSOLE_DEFINE)
-
 $(BUILD_DIR)/%.o: $(SRC_DIR)/%.cpp ${INC_DIR}/*.h
 	@mkdir -p $(@D)
 	$(CXX) $(CXXFLAGS) $(LDFLAGS) -I$(INC_DIR) -c -o $@ $<
@@ -75,9 +76,5 @@ clean:
 	rm -rf ./*~ ./*.swp
 	rm -rf *~
 
-unitTests:
-
-test: unitTests
-
 run: $(TARGET)
 	./$(TARGET)
diff --git a/src/main.cpp b/src/main.cpp
index a92f1abe9ea3e51ebfef92aa37336a8547756367..5b0ceb70b8cccf0c7d19e72fbb280767e25a5b32 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -1,5 +1,6 @@
 #include "main.h"
 
+#ifndef __TEST_RUNNER__
 
 int main( int argc, char* argv[] ) {
 	const uint16_t SCREEN_HEIGHT = 600;
@@ -59,3 +60,5 @@ int main( int argc, char* argv[] ) {
 	return 0;
 }
 // int /*WINAPI*/ WinMain(/*HINSTANCE hInstance, HINSTANCE, LPSTR, int*/) { main(); return 0; }
+
+#endif // __TEST_RUNNER__
diff --git a/tests/maths/vec2.test.cpp b/tests/maths/vec2.test.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..638042de078b8b3d085cd185c519bf6783a7033c
--- /dev/null
+++ b/tests/maths/vec2.test.cpp
@@ -0,0 +1,4 @@
+#include <iostream>
+#include "doctest.h"
+
+std::cout << "Test" << std::endl;