diff --git a/SimpleTests/MeshTests/MPI/CMakeLists.txt b/SimpleTests/MeshTests/MPI/CMakeLists.txt
index 46831d7dea9aedb3a47a2731580b6592763fe964..6ba0f5d7ce4631bc82aa3e1ff915b6b8b5f36255 100644
--- a/SimpleTests/MeshTests/MPI/CMakeLists.txt
+++ b/SimpleTests/MeshTests/MPI/CMakeLists.txt
@@ -19,36 +19,65 @@ if(OGS_USE_MPI)
 	target_link_libraries(test_node_partitioned_mesh ${MPI_CXX_LIBRARIES})
 endif()
 
-set(FilePath "DATA{${ExternalData_SOURCE_ROOT}/NodePartitionedMesh/ASCII/,REGEX:.*}")
-set(MPITestParameters -np 3 "${PROJECT_BINARY_DIR}/bin/test_node_partitioned_mesh" "${FilePath}/mesh_3d")
-Add_Test(
+AddTest(
 	NAME NodePartitionedMeshTestASCII
-	COMMAND "mpirun" ${MPITestParameters}
+	PATH NodePartitionedMesh/ASCII
+	EXECUTABLE test_node_partitioned_mesh
+	EXECUTABLE_ARGS mesh_3d
+	WRAPPER mpirun
+	WRAPPER_ARGS "-np 3"
+	TESTER diff
+	DIFF_DATA mesh_3d_partition_0.msh mesh_3d_partition_1.msh mesh_3d_partition_2.msh
 )
 
-set(FilePath "DATA{${ExternalData_SOURCE_ROOT}/NodePartitionedMesh/Binary/,REGEX:.*}")
-set(MPITestParameters -np 3 "${PROJECT_BINARY_DIR}/bin/test_node_partitioned_mesh" "${FilePath}/mesh_3d")
-Add_Test(
+AddTest(
 	NAME NodePartitionedMeshTestBinary
-	COMMAND  "mpirun" ${MPITestParameters}
+	PATH NodePartitionedMesh/Binary
+	EXECUTABLE test_node_partitioned_mesh
+	EXECUTABLE_ARGS mesh_3d
+	WRAPPER mpirun
+	WRAPPER_ARGS "-np 3"
+	TESTER diff
+	DIFF_DATA mesh_3d_partition_0.msh mesh_3d_partition_1.msh mesh_3d_partition_2.msh
 )
 
 ## FEM#PETSc solver tests
-set(FilePath "DATA{${ExternalData_SOURCE_ROOT}/EllipticPETSc/,REGEX:.*}")
-set(MPITestParameters -np 3 "${PROJECT_BINARY_DIR}/bin/ogs" "${FilePath}/quad_20x10_GroundWaterFlow.prj" --  -gw_ksp_type bcgs -gw_pc_type bjacobi -gw_ksp_atol 1.e-10)
-Add_Test(
-    NAME ParallelFEM_GroundWaterFlow2D
-    COMMAND  "mpirun" ${MPITestParameters} ${SolverType}
+AddTest(
+	NAME ParallelFEM_GroundWaterFlow2D
+	PATH EllipticPETSc/
+	EXECUTABLE_ARGS quad_20x10_GroundWaterFlow.prj -gw_ksp_type bcgs -gw_pc_type bjacobi -gw_ksp_atol 1.e-10
+	WRAPPER mpirun
+	WRAPPER_ARGS "-np 3"
+	TESTER diff
+	DIFF_DATA
+		quad_20x10_GroundWaterFlow_result_pcs_0_ts_1_0.vtu
+		quad_20x10_GroundWaterFlow_result_pcs_0_ts_1_1.vtu
+		quad_20x10_GroundWaterFlow_result_pcs_0_ts_1_2.vtu
 )
 
-set(MPITestParameters -np 3 "${PROJECT_BINARY_DIR}/bin/ogs" "${FilePath}/cube_1e3.prj" --  -gw_ksp_type bcgs -gw_pc_type bjacobi -gw_ksp_atol 1.e-10)
-Add_Test(
-    NAME ParallelFEM_GroundWaterFlow3D_DirichletBC
-    COMMAND  "mpirun" ${MPITestParameters} ${SolverType}
+AddTest(
+	NAME ParallelFEM_GroundWaterFlow3D_DirichletBC
+	PATH EllipticPETSc/
+	EXECUTABLE_ARGS cube_1e3.prj -gw_ksp_type bcgs -gw_pc_type bjacobi -gw_ksp_atol 1.e-10
+	WRAPPER mpirun
+	WRAPPER_ARGS "-np 3"
+	TESTER diff
+	DIFF_DATA
+		cube_1e3_result_pcs_0_ts_1_0.vtu
+		cube_1e3_result_pcs_0_ts_1_1.vtu
+		cube_1e3_result_pcs_0_ts_1_2.vtu
 )
 
-set(MPITestParameters -np 3 "${PROJECT_BINARY_DIR}/bin/ogs" "${FilePath}/cube_1e3_neumann.prj" --  -gw_ksp_type bcgs -gw_pc_type bjacobi -gw_ksp_atol 1.e-10)
-Add_Test(
-    NAME ParallelFEM_GroundWaterFlow3D_NeumannBC
-    COMMAND  "mpirun" ${MPITestParameters} ${SolverType}
+AddTest(
+	NAME ParallelFEM_GroundWaterFlow3D_NeumannBC
+	PATH EllipticPETSc/
+	EXECUTABLE_ARGS cube_1e3_neumann.prj -gw_ksp_type bcgs -gw_pc_type bjacobi -gw_ksp_atol 1.e-10
+	WRAPPER mpirun
+	WRAPPER_ARGS "-np 3"
+	TESTER diff
+	DIFF_DATA
+		cube_1e3_neumann_result_pcs_0_ts_1_0.vtu
+		cube_1e3_neumann_result_pcs_0_ts_1_1.vtu
+		cube_1e3_neumann_result_pcs_0_ts_1_2.vtu
 )
+
diff --git a/scripts/cmake/test/AddTest.cmake b/scripts/cmake/test/AddTest.cmake
index 96c1123882eecf526260f6c699c5ad05837bbf25..b3948ae53c0f8c73ca8bba720f5163529d087ad4 100644
--- a/scripts/cmake/test/AddTest.cmake
+++ b/scripts/cmake/test/AddTest.cmake
@@ -78,7 +78,7 @@ function (AddTest)
 		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}")
+		set(WRAPPER_COMMAND ${MPIRUN_TOOL_PATH})
 	endif()
 
 	# --- Implement testers ---
@@ -160,6 +160,7 @@ function (AddTest)
 		-DEXECUTABLE_ARGS=${AddTest_EXECUTABLE_ARGS}
 		-Dcase_path=${AddTest_SOURCE_PATH}
 		-DWRAPPER_COMMAND=${WRAPPER_COMMAND}
+		-DWRAPPER_ARGS=${AddTest_WRAPPER_ARGS}
 		-P ${PROJECT_SOURCE_DIR}/scripts/cmake/test/AddTestWrapper.cmake
 	)
 
diff --git a/scripts/cmake/test/AddTestWrapper.cmake b/scripts/cmake/test/AddTestWrapper.cmake
index fe52d89083a73573f4d50e71977ce02950cebbbb..17c1fd7e626329eb8ebe98a93c2517ae3935505c 100644
--- a/scripts/cmake/test/AddTestWrapper.cmake
+++ b/scripts/cmake/test/AddTestWrapper.cmake
@@ -1,7 +1,8 @@
 string(REPLACE " " ";" WRAPPER_COMMAND ${WRAPPER_COMMAND})
+string(REPLACE " " ";" WRAPPER_ARGS ${WRAPPER_ARGS})
 string(REPLACE " " ";" EXECUTABLE_ARGS ${EXECUTABLE_ARGS})
 execute_process(
-	COMMAND ${WRAPPER_COMMAND} ${EXECUTABLE} ${EXECUTABLE_ARGS}
+	COMMAND ${WRAPPER_COMMAND} ${WRAPPER_ARGS} ${EXECUTABLE} ${EXECUTABLE_ARGS}
 	WORKING_DIRECTORY ${case_path}
 	RESULT_VARIABLE EXIT_CODE
 )