diff --git a/scripts/cmake/test/AddTest.cmake b/scripts/cmake/test/AddTest.cmake
index e8da5b5609c86fa80d499c57c9cd6a22779d213b..4b4ab6cb27f30a2eb60d908665ec66c01d233dd7 100644
--- a/scripts/cmake/test/AddTest.cmake
+++ b/scripts/cmake/test/AddTest.cmake
@@ -26,7 +26,7 @@ function (AddTest)
 	# parse arguments
 	set(options NONE)
 	set(oneValueArgs EXECUTABLE PATH NAME WRAPPER TESTER)
-	set(multiValueArgs EXECUTABLE_ARGS DATA DIFF_DATA)
+	set(multiValueArgs EXECUTABLE_ARGS DATA DIFF_DATA WRAPPER_ARGS)
 	cmake_parse_arguments(AddTest "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
 
 	# set defaults
@@ -63,6 +63,9 @@ function (AddTest)
 	if(AddTest_WRAPPER STREQUAL "callgrind" AND NOT VALGRIND_TOOL_PATH)
 		message(FATAL_ERROR "Valgrind is required for callgrind wrapper but was not found!")
 	endif()
+	if(AddTest_WRAPPER STREQUAL "mpirun" AND NOT MPIRUN_TOOL_PATH)
+		message(FATAL_ERROR "mpirun is required for mpirun wrapper but was not found!")
+	endif()
 
 	if(AddTest_WRAPPER STREQUAL "time")
 		set(WRAPPER_COMMAND time)
@@ -72,6 +75,8 @@ function (AddTest)
 	elseif(AddTest_WRAPPER STREQUAL "callgrind" AND VALGRIND_TOOL_PATH)
 		set(WRAPPER_COMMAND "${VALGRIND_TOOL_PATH} --tool=callgrind --branch-sim=yes --cache-sim=yes --dump-instr=yes --collect-jumps=yes")
 		unset(tester)
+	elseif(AddTest_WRAPPER STREQUAL "mpirun")
+		set(WRAPPER_COMMAND "${MPIRUN_TOOL_PATH} ${AddTest_WRAPPER_ARGS}")
 	endif()
 
 	# --- Implement testers ---
diff --git a/scripts/cmake/test/Test.cmake b/scripts/cmake/test/Test.cmake
index d68cdc6c62f12824ebdf0a32da1aa70c62e6b3d1..36a4a1ae0562e31382891b38cb6eac630a0e2a1e 100644
--- a/scripts/cmake/test/Test.cmake
+++ b/scripts/cmake/test/Test.cmake
@@ -5,6 +5,7 @@ SET(TIME_TOOL_PATH time)
 FIND_PROGRAM(GREP_TOOL_PATH grep)
 FIND_PROGRAM(BASH_TOOL_PATH bash)
 FIND_PROGRAM(VALGRIND_TOOL_PATH valgrind)
+FIND_PROGRAM(MPIRUN_TOOL_PATH mpirun)
 
 ENABLE_TESTING() # Enable CTest