diff --git a/bin/fuzzycomparevtu.py b/bin/fuzzycomparevtu.py
index 8f6571070b34ef149e35e873e13a19899f6ae73f..55d818219e6e7f94bba86e551e4b8a5eb1a849b8 100644
--- a/bin/fuzzycomparevtu.py
+++ b/bin/fuzzycomparevtu.py
@@ -1,80 +1,294 @@
+""" A module for fuzzy comparing VTK files.
+
+This module provides methods to compare two VTK files. Applicable
+for all VTK style formats like VTK files. Fuzzy compares numbers by
+using absolute and/or relative difference comparison.
+
+"""
+from __future__ import absolute_import
 import argparse
-from xml.dom import minidom
-
-# fuzzy compare XML tree from XML strings
-def isFuzzyEqualXml(xml1, xml2, absolute, relative):
-    dom1 = minidom.parseString(xml1)
-    dom2 = minidom.parseString(xml2)
-    return isFuzzyEqualNode(dom1.documentElement, dom2.documentElement, absolute, relative)
-
-# fuzzy compare of XML nodes
-def isFuzzyEqualNode(node1, node2, absolute, relative):
-    noError = True
-    if node1.tagName != node2.tagName:
-        print 'The name of the node differs in ', node1.tagName, ' and ', node2.tagName
-        return False
-    if sorted(node1.attributes.items()) != sorted(node2.attributes.items()):
-        print 'Attributes differ in node ', node1.tagName
-        return False
-    if len(node1.childNodes) != len(node2.childNodes):
-        print 'Number of children differs in node ', node1.tagName
-        return False
-    for node1child, node2child in zip(node1.childNodes, node2.childNodes):
-        if node1child.nodeType != node2child.nodeType:
-            print 'Node type differs in ', node1.tagName
-            return False
-        if node1child.nodeType == node1child.TEXT_NODE and not isFuzzyEqualText(node1child.data, node2child.data, absolute, relative):
-            print 'Data differs in parameter ', node2.attributes.items(), ' at node ', node2child.nodeType
-            noError = False
-            continue
-        if node1child.nodeType == node1child.ELEMENT_NODE and not isFuzzyEqualNode(node1child, node2child, absolute, relative):
-            noError = False
-            continue
-    return noError
-
-# fuzzy compare of text consisting of whitespace separated numbers
-def isFuzzyEqualText(text1, text2, absolute, relative):
+import xml.etree.ElementTree as ET
+from operator import attrgetter, itemgetter
+import sys
+from six.moves import range
+from six.moves import zip
+
+
+# fuzzy compare VTK tree from VTK strings
+def compare_vtk(vtk1, vtk2, absolute=1e-9, relative=1e-2, verbose=True):
+    """ take two vtk files and compare them. Returns an exit key as returnvalue.
+
+    Arguments:
+    ----------
+    vtk1, vtk2 : string
+        The filenames of the vtk files to compare
+
+    Keyword Arguments:
+    ------------------
+    absolute : float
+        The epsilon used for comparing numbers with an absolute criterion
+    relative: float
+        The epsilon used for comparing numbers with an relative criterion
+    """
+
+    # construct element tree from vtk file
+    root1 = ET.fromstring(open(vtk1).read())
+    root2 = ET.fromstring(open(vtk2).read())
+
+    # sort the vtk file in case nodes appear in different positions
+    # e.g. because of minor changes in the output code
+    sortedroot1 = sort_vtk(root1)
+    sortedroot2 = sort_vtk(root2)
+
+    if verbose:
+        print("Comparing {} and {}".format(vtk1, vtk2))
+
+    # sort the vtk file so that the comparison is independent of the
+    # index numbering (coming e.g. from different grid managers)
+    sortedroot1, sortedroot2 = sort_vtk_by_coordinates(sortedroot1, sortedroot2, verbose)
+
+    # do the fuzzy compare
+    if is_fuzzy_equal_node(sortedroot1, sortedroot2, absolute, relative, verbose):
+        return 0
+    else:
+        return 1
+
+
+# fuzzy compare of VTK nodes
+def is_fuzzy_equal_node(node1, node2, absolute, relative, verbose=True):
+
+    is_equal = True
+    for node1child, node2child in zip(node1.iter(), node2.iter()):
+        if node1.tag != node2.tag:
+            if verbose:
+                print('The name of the node differs in: {} and {}'.format(node1.tag, node2.tag))
+                is_equal = False
+            else:
+                return False
+        if list(node1.attrib.items()) != list(node2.attrib.items()):
+            if verbose:
+                print('Attributes differ in node: {}'.format(node1.tag))
+                is_equal = False
+            else:
+                return False
+        if len(list(node1.iter())) != len(list(node2.iter())):
+            if verbose:
+                print('Number of children differs in node: {}'.format(node1.tag))
+                is_equal = False
+            else:
+                return False
+        if node1child.text or node2child.text:
+            if not is_fuzzy_equal_text(node1child.text, node2child.text, node1child.attrib["Name"], absolute, relative, verbose):
+                if node1child.attrib["Name"] == node2child.attrib["Name"]:
+                    if verbose:
+                        print('Data differs in parameter: {}'.format(node1child.attrib["Name"]))
+                        is_equal = False
+                    else:
+                        return False
+                else:
+                    if verbose:
+                        print('Comparing different parameters: {} and {}'.format(node1child.attrib["Name"], node2child.attrib["Name"]))
+                        is_equal = False
+                    else:
+                        return False
+    return is_equal
+
+
+# fuzzy compare of text (in the xml sense) consisting of whitespace separated numbers
+def is_fuzzy_equal_text(text1, text2, parameter, absolute, relative, verbose=True):
     list1 = text1.split()
     list2 = text2.split()
     # difference only in whitespace?
     if (list1 == list2):
         return True
     # compare number by number
-    maximum1 = 0.0
-    maximum2 = 0.0
+    is_equal = True
+    max_relative_difference = 0.0
+    max_absolute_difference = 0.0
     for number1, number2 in zip(list1, list2):
         number1 = float(number1)
         number2 = float(number2)
-        if (abs(number1 - number2) > absolute
-            and (number2 == 0.0 or abs(abs(number1 / number2) - 1.0) > relative)):
-            if (abs(number1 - number2) > abs(maximum1 - maximum2)):
-                maximum1 = float(number1)
-                maximum2 = float(number2)
-    if (abs(maximum1 - maximum2) > 0.0):
-        print 'Difference is too large between', maximum1, ' and ', maximum2
-        return False
-    return True
-
-# main program
-# handle arguments and print help message
-parser = argparse.ArgumentParser(description='Fuzzy compare of two VTK\
-    (Visualization Toolkit) files. The files are accepted if for every\
-    value the difference is below the absolute error or below the\
-    relative error or below both.')
-parser.add_argument('vtu_file_1', type=open,
-    help='first file to compare')
-parser.add_argument('vtu_file_2', type=open,
-    help='second file to compare')
-parser.add_argument('-r', '--relative', type=float, default=1e-2,
-    help='maximum relative error (default=1e-2)')
-parser.add_argument('-a', '--absolute', type=float, default=1e-9,
-    help='maximum absolute error (default=1e-9)')
-args = parser.parse_args()
-
-# fuzzy compare
-if (isFuzzyEqualXml(args.vtu_file_1.read(), args.vtu_file_2.read(), args.absolute, args.relative)):
-    exit
-else:
-    exit(1)
+        if not number2 == 0.0:
+            # check for the relative difference
+            if abs(abs(number1 / number2) - 1.0) > relative and not abs(number1 - number2) < absolute:
+                if verbose:
+                    #print('Relative difference is too large between: {} and {}'.format(number1, number2))
+                    max_relative_difference = max(max_relative_difference, abs(abs(number1 / number2) - 1.0))
+                    is_equal = False
+                else:
+                    return False
+        else:
+            # check for the absolute difference
+            if abs(number1 - number2) > absolute:
+                if verbose:
+                    #print('Absolute difference is too large between: {} and {}'.format(number1, number2))
+                    max_absolute_difference = max(max_absolute_difference, abs(number1 - number2))
+                    is_equal = False
+                else:
+                    return False
+    if verbose:
+        if max_absolute_difference != 0.0:
+            print('Maximum absolute difference for parameter {}: {}'.format(parameter, max_absolute_difference))
+        if max_relative_difference != 0.0:
+            print('Maximum relative difference for parameter {}: {:.2%}'.format(parameter, max_relative_difference))
+    return is_equal
+
+
+def sort_by_name(elem):
+    name = elem.get('Name')
+    if name:
+        try:
+            return str(name)
+        except ValueError:
+            return ''
+    return ''
+
+
+# sorts attributes of an item and returns a sorted item
+def sort_attributes(item, sorteditem):
+    attrkeys = sorted(item.keys())
+    for key in attrkeys:
+        sorteditem.set(key, item.get(key))
+
+
+def sort_elements(items, newroot):
+    items = sorted(items, key=sort_by_name)
+    items = sorted(items, key=attrgetter('tag'))
+
+    # Once sorted, we sort each of the items
+    for item in items:
+        # Create a new item to represent the sorted version
+        # of the next item, and copy the tag name and contents
+        newitem = ET.Element(item.tag)
+        if item.text and item.text.isspace() == False:
+            newitem.text = item.text
+
+        # Copy the attributes (sorted by key) to the new item
+        sort_attributes(item, newitem)
+
+        # Copy the children of item (sorted) to the new item
+        sort_elements(list(item), newitem)
+
+        # Append this sorted item to the sorted root
+        newroot.append(newitem)
+
+
+# has to sort all Cell and Point Data after the attribute "Name"!
+def sort_vtk(root):
+    if(root.tag != "VTKFile"):
+        print('Format is not a VTKFile. Sorting will most likely fail!')
+    # create a new root for the sorted tree
+    newroot = ET.Element(root.tag)
+    # create the sorted copy
+    # (after the idea of Dale Lane's xmldiff.py)
+    sort_attributes(root, newroot)
+    sort_elements(list(root), newroot)
+    # return the sorted element tree
+    return newroot
+
+
+# sorts the data by point coordinates so that it is independent of index numbering
+def sort_vtk_by_coordinates(root1, root2, verbose=True):
+    if not is_fuzzy_equal_node(root1.find(".//Points/DataArray"), root2.find(".//Points/DataArray"), 1e-2, 1e-9, False):
+        if verbose:
+            print("Sorting vtu by coordinates...")
+        for root in [root1, root2]:
+            # parse all DataArrays in a dictionary
+            pointDataArrays = []
+            cellDataArrays = []
+            dataArrays = {}
+            numberOfComponents = {}
+            for dataArray in root.findall(".//PointData/DataArray"):
+                pointDataArrays.append(dataArray.attrib["Name"])
+            for dataArray in root.findall(".//CellData/DataArray"):
+                cellDataArrays.append(dataArray.attrib["Name"])
+            for dataArray in root.findall(".//DataArray"):
+                dataArrays[dataArray.attrib["Name"]] = dataArray.text
+                numberOfComponents[dataArray.attrib["Name"]] = dataArray.attrib["NumberOfComponents"]
+
+            vertexArray = []
+            coords = dataArrays["Coordinates"].split()
+            # group the coordinates into coordinate tuples
+            dim = int(numberOfComponents["Coordinates"])
+            for i in range(len(coords)//dim):
+                vertexArray.append([float(c) for c in coords[i*dim:i*dim+dim]])
+
+            # obtain a vertex index map
+            vMap = []
+            for idx, coords in enumerate(vertexArray):
+                vMap.append((idx, coords))
+            sortedVMap = sorted(vMap, key=itemgetter(1))
+            vertexIndexMap = {}
+            for idxNew, idxOld in enumerate(sortedVMap):
+                vertexIndexMap[idxOld[0]] = idxNew
+
+            # group the cells into vertex index tuples
+            cellArray = []
+            offsets = dataArrays["offsets"].split()
+            connectivity = dataArrays["connectivity"].split()
+            vertex = 0
+            for cellIdx, offset in enumerate(offsets):
+                cellArray.append([])
+                for v in range(vertex, int(offset)):
+                    cellArray[cellIdx].append(int(connectivity[v]))
+                    vertex += 1
+
+            # replace all vertex indices in the cellArray by the new indices
+            for cell in cellArray:
+                for idx, vertexIndex in enumerate(cell):
+                    cell[idx] = vertexIndexMap[vertexIndex]
+
+            # sort all data arrays
+            for name, text in list(dataArrays.items()):
+                # split the text
+                items = text.split()
+                # convert if vector
+                num = int(numberOfComponents[name])
+                newitems = []
+                for i in range(len(items)//num):
+                    newitems.append([i for i in items[i*num:i*num+num]])
+                items = newitems
+                # sort the items: we have either vertex or cell data
+                if name in pointDataArrays:
+                    sortedItems = [j for (i, j) in sorted(zip(vertexArray, items), key=itemgetter(0))]
+                elif name in cellDataArrays or name == "types":
+                    sortedItems = [j for (i, j) in sorted(zip(cellArray, items), key=itemgetter(0))]
+                elif name == "offsets":
+                    sortedItems = []
+                    counter = 0
+                    for cell in sorted(cellArray):
+                        counter += len(cell)
+                        sortedItems.append([str(counter)])
+                elif name == "Coordinates":
+                    sortedItems = sorted(vertexArray)
+                elif name == "connectivity":
+                    sortedItems = sorted(cellArray)
+
+                # convert the sorted arrays to a xml text
+                dataArrays[name] = ""
+                for i in sortedItems:
+                    for j in i:
+                        dataArrays[name] += str(j) + " "
+
+            # do the replacement in the actual elements
+            for dataArray in root.findall(".//DataArray"):
+                dataArray.text = dataArrays[dataArray.attrib["Name"]]
+
+    return (root1, root2)
+
 
+# main program if called as script return appropriate error codes
+if __name__ == "__main__":
+    # handle arguments and print help message
+    parser = argparse.ArgumentParser(description='Fuzzy compare of two VTK\
+        (Visualization Toolkit) files. The files are accepted if for every\
+        value the difference is below the absolute error or below the\
+        relative error or below both.')
+    parser.add_argument('vtk_file_1', type=str, help='first file to compare')
+    parser.add_argument('vtk_file_2', type=str, help='second file to compare')
+    parser.add_argument('-r', '--relative', type=float, default=1e-2, help='maximum relative error (default=1e-2)')
+    parser.add_argument('-a', '--absolute', type=float, default=1e-9, help='maximum absolute error (default=1e-9)')
+    parser.add_argument('-v', '--verbose', type=bool, default=True, help='verbosity of the script')
+    args = vars(parser.parse_args())
 
+    sys.exit(compare_vtk(args["vtk_file_1"], args["vtk_file_2"], args["absolute"], args["relative"], args["verbose"]))
diff --git a/bin/runTest.sh b/bin/runTest.sh
deleted file mode 100755
index de60a97e4c0f910cd0e2c50e31e27c63fb444902..0000000000000000000000000000000000000000
--- a/bin/runTest.sh
+++ /dev/null
@@ -1,96 +0,0 @@
-#! /bin/bash
-#
-# Runs a test from the test directory and compare the resulting VTU files.
-#
-# Usage:
-#
-# runTest.sh COMPAREFLAG/SCRIPT REFERENCE_RESULT_FILE TEST_RESULT_FILE TEST_BINARY TEST_ARGS
-#
-
-function usage() {
-    echo "Usage:"
-    echo
-    echo "runTest.sh COMPAREFLAG/SCRIPT REFERENCE_RESULT_FILE TEST_RESULT_FILE TEST_BINARY [TEST_ARGS]"
-    echo "COMPAREFLAG: fuzzyvtu         - uses the fuzzycomparevtu.py script"
-    echo "             exact            - uses diff for exact compare of two files"
-    echo "             PATH_TO_SCRIPT   - tries to execute the custom script"
-};
-
-CMAKE_SOURCE_DIR=$(dirname "$0")
-COMPARE_FLAG="$1"
-REFERENCE_RESULT="$2"
-TEST_RESULT="$3"
-TEST_BINARY="$4"
-TEST_ARGS="${@:5:100}"
-rm -fv $TEST_RESULT
-
-# make sure we have at least 3 parameters
-if test "$#" -lt 4; then
-    echo "Wrong number of parameters"
-    echo
-    usage
-    exit 1
-fi
-
-# make sure the reference result exists
-if ! test -r "$REFERENCE_RESULT"; then
-    echo "File $REFERENCE_RESULT does not exist or is not readable"
-    echo
-    usage
-    exit 1
-fi
-
-#run the test
-echo "######################"
-echo "# Running test"
-echo "######################"
-$TEST_BINARY $TEST_ARGS
-RETURN_CODE_TEST_BINARY=$?
-if test "$RETURN_CODE_TEST_BINARY" != "0"; then
-    echo "Return code: $RETURN_CODE_TEST_BINARY"
-    exit $RETURN_CODE_TEST_BINARY
-fi
-
-# compare the results
-echo "######################"
-echo "# Comparing results"
-echo "######################"
-if ! test -r "$TEST_RESULT"; then
-    echo "File $TEST_RESULT does not exist or is not readable"
-    exit 1
-fi
-
-# running the compare script
-NOT_EQUAL=false
-if [ "$COMPARE_FLAG" = "fuzzyvtu" -o \
-     "$COMPARE_FLAG" = "$CMAKE_SOURCE_DIR/fuzzycomparevtu.py" ]; then
-    if ! python $CMAKE_SOURCE_DIR/fuzzycomparevtu.py "$REFERENCE_RESULT" "$TEST_RESULT"; then
-        NOT_EQUAL=true
-    fi
-elif [ "$COMPARE_FLAG" = "exact" ]; then
-    if ! diff "$REFERENCE_RESULT" "$TEST_RESULT"; then
-        NOT_EQUAL=true
-    fi
-elif [ -e "$COMPARE_FLAG" ]; then
-    if ! $COMPARE_FLAG "$REFERENCE_RESULT" "$TEST_RESULT"; then
-        NOT_EQUAL=true
-    fi
-else
-    echo
-    echo "ERROR: $0 was not able to run the compare script:"
-    echo "       $COMPARE_FLAG"
-    echo
-    exit 2
-fi
-
-# printing error message in case of failure
-if [ "$NOT_EQUAL" = "true" ]; then
-    echo "The files \"$TEST_RESULT\" and \"$REFERENCE_RESULT\" are different."
-    echo "Make sure the contents of \"$TEST_RESULT\" are still valid and "
-    echo "make it the reference result if necessary."
-    exit 1
-fi
-
-# SUCCESS!!!!!!
-echo "Result and reference result are identical"
-exit 0
diff --git a/bin/runtest.py b/bin/runtest.py
new file mode 100644
index 0000000000000000000000000000000000000000..e7b04828c46cf467f0b92ed01cef378fd8343929
--- /dev/null
+++ b/bin/runtest.py
@@ -0,0 +1,80 @@
+import argparse
+import os, sys
+import subprocess
+from fuzzycomparevtu import compare_vtk
+
+# parse arguments
+parser = argparse.ArgumentParser()
+parser.add_argument('-c', '--command', nargs=1, help='The executable and optional arguments as a single string', required=True)
+parser.add_argument('-s', '--script', nargs=1, help="The comparison script. [fuzzy, exact, <path_to_script>] where the script takes two vtu files as arguments.")
+parser.add_argument('-f', '--files', nargs='+', help="Pairs of reference and vtu file names. Usage: '[-f ref1 vtu1 [[ref2] [vtu2] ...]]'")
+parser.add_argument('-r', '--relative', type=float, default=1e-2, help='maximum relative error (default=1e-2) when using fuzzy comparison')
+parser.add_argument('-a', '--absolute', type=float, default=1e-9, help='maximum absolute error (default=1e-9) when using fuzzy comparison')
+args = vars(parser.parse_args())
+
+# check parameters
+if args['script']:
+    if len(args['files'])%2 != 0 or not args['files']:
+        sys.stderr.write("The files have to be pairs of vtu and reference files. Usage '-f [ref1] [vtu1] [[ref2] [vtu2] ...]'")
+        parser.print_help()
+        sys.exit(1)
+    for i in range(0, len(args['files'])//2):
+        # delete the vtu files to compare
+        ref_dir = os.path.dirname(os.path.abspath(__file__)).rstrip("bin") + "test/references"
+        if os.path.dirname(args['files'][(i*2)+1]) == ref_dir:
+            sys.stderr.write("Tried to delete a reference solution. Specify reference file first, then the VTU file. Usage: '[-f ref1 vtu1 [[ref2] [vtu2] ...]]'")
+            sys.exit(1)
+        subprocess.call(['rm', '-fv', args['files'][(i*2)+1]])
+
+# run the test
+res = 1
+try:
+    res = subprocess.call(args['command'][0].split())
+except OSError as e:
+    print(args['command'][0].split())
+    print("OSError: Command not found. Most likely the executable specified doesn't exist.")
+    sys.exit(1)
+if res:
+    sys.exit(1)
+
+# run the comparison
+if args['script']:
+    # exact comparison?
+    if args['script'] == ['exact']:
+        return_code = 0
+        for i in range(0, len(args['files'])//2):
+            print("\nExact comparison...")
+            result = subprocess.call(['diff', args['files'][i*2], args['files'][(i*2)+1]])
+            if result:
+                return_code = 1
+        sys.exit(return_code)
+
+    # fuzzy comparison?
+    elif args['script'] == ["fuzzy"] or args['script'] == [os.path.dirname(os.path.abspath(__file__)) + "/fuzzycomparevtu.py"]:
+        return_code = 0
+        for i in range(0, len(args['files'])//2):
+            print("\nFuzzy comparison...")
+            if args['relative'] and args['absolute']:
+                result = compare_vtk(args['files'][i*2], args['files'][(i*2)+1], relative=args['relative'], absolute=args['absolute'])
+            elif args['relative'] and not args['absolute']:
+                result = compare_vtk(args['files'][i*2], args['files'][(i*2)+1], relative=args['relative'])
+            elif args['absolute'] and not args['relative']:
+                result = compare_vtk(args['files'][i*2], args['files'][(i*2)+1], absolute=args['absolute'])
+            else:
+                result = compare_vtk(args['files'][i*2], args['files'][(i*2)+1])
+            if result:
+                return_code = 1
+        sys.exit(return_code)
+
+    # other script?
+    else:
+        return_code = 0
+        for i in range(0, len(args['files'])//2):
+            print("\n{} comparison...".format(args['script']))
+            result = subprocess.call(args['script'], args['files'][i*2], args['files'][(i*2)+1])
+            if result:
+                return_code = 1
+        sys.exit(return_code)
+
+# everything is fine
+sys.exit(0)
diff --git a/test/common/generalproblem/CMakeLists.txt b/test/common/generalproblem/CMakeLists.txt
index 39f4491a877f6b1a0cbdc7969bdae6f9c70cd4f7..38db6bda3b13c82367a74f6d44d7865c454825ae 100644
--- a/test/common/generalproblem/CMakeLists.txt
+++ b/test/common/generalproblem/CMakeLists.txt
@@ -1,17 +1,17 @@
 add_dumux_test(test_general_box test_general_box test_generalproblem2p.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/generallens_box-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/generallens_box-00003.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_general_box
-  -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_generalproblem2p_reference.input
-  -ModelType Box)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/generallens_box-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/generallens_box-00003.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_general_box
+                            -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_generalproblem2p_reference.input
+                            -ModelType Box")
 
 add_dumux_test(test_general_dec test_general_dec test_generalproblem2p.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/generallens_decoupled-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/generallens_decoupled-00003.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_general_dec
-  -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_generalproblem2p_reference.input
-  -ModelType Decoupled)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/generallens_decoupled-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/generallens_decoupled-00003.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_general_dec
+                            -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_generalproblem2p_reference.input
+                            -ModelType Decoupled")
diff --git a/test/decoupled/1p/CMakeLists.txt b/test/decoupled/1p/CMakeLists.txt
index 335a4b8cfd395c4494cbee6e33271acd936ab9cb..3c4f4cb9cc6d7fd7137c526e3b027932e59f3d1a 100644
--- a/test/decoupled/1p/CMakeLists.txt
+++ b/test/decoupled/1p/CMakeLists.txt
@@ -1,39 +1,34 @@
 add_dumux_test(test_dec1p test_dec1p test_1p.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/test_1p-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_1p-00001.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_dec1p
-  -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_1p.input)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/test_1p-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/test_1p-00001.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_dec1p -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_1p.input")
 
 add_dumux_test(test_diffusion test_diffusion test_diffusion.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/diffusion-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/mimeticdiffusion-00001.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_diffusion
-  3)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/diffusion-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/mimeticdiffusion-00001.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_diffusion 3")
 
 add_dumux_test(test_diffusion3d_fv test_diffusion3d test_diffusion3d.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/test_diffusion3d_fv-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_diffusion3d_fv-00001.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_diffusion3d
-  -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_diffusion3d_reference.input)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/test_diffusion3d_fv-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/test_diffusion3d_fv-00001.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_diffusion3d -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_diffusion3d_reference.input")
 
 add_dumux_test(test_diffusion3d_fvmpfal test_diffusion3d test_diffusion3d.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/test_diffusion3d_fvmpfal-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_diffusion3d_fvmpfal-00001.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_diffusion3d
-  -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_diffusion3d_reference.input)
-  
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/test_diffusion3d_fvmpfal-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/test_diffusion3d_fvmpfal-00001.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_diffusion3d -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_diffusion3d_reference.input")
+
 add_dumux_test(test_diffusion3d_mimetic test_diffusion3d test_diffusion3d.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/test_diffusion3d_mimetic-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_diffusion3d_mimetic-00001.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_diffusion3d
-  -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_diffusion3d_reference.input)
\ No newline at end of file
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/test_diffusion3d_mimetic-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/test_diffusion3d_mimetic-00001.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_diffusion3d -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_diffusion3d_reference.input")
\ No newline at end of file
diff --git a/test/decoupled/2p/CMakeLists.txt b/test/decoupled/2p/CMakeLists.txt
index 6a483ce2990b1cc1b5c4c6181852e090a36d8be3..f5bf764da40e9cccf1ccda72a44af6f5d272c127 100644
--- a/test/decoupled/2p/CMakeLists.txt
+++ b/test/decoupled/2p/CMakeLists.txt
@@ -1,126 +1,100 @@
 add_dumux_test(test_impes test_impes test_impes.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/test_impes-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_impes-00009.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_impes)
+               python${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/test_impes-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/test_impes-00009.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_impes")
 
 add_dumux_test(test_impesadaptive test_impesadaptive test_impesadaptive.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/test_2padaptive-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_2padaptive-00007.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_impesadaptive)
+               python${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/test_2padaptive-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/test_2padaptive-00007.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_impesadaptive")
 
 if(MPI_FOUND)
   add_dumux_test(test_impeswithamg test_impeswithamg test_impeswithamg.cc
-    ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-    ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-    ${CMAKE_SOURCE_DIR}/test/references/test_impes-reference-parallel.vtu
-    ${CMAKE_CURRENT_BINARY_DIR}/s0002-p0001-test_impeswithamg-00094.vtu
-    "${MPIEXEC} -np 2 ${CMAKE_CURRENT_BINARY_DIR}/test_impeswithamg"
-    -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_impeswithamg.input
-    -TimeManager.TEnd 7e7)
+                 python${CMAKE_SOURCE_DIR}/bin/runtest.py
+                   --script fuzzy
+                   --files ${CMAKE_SOURCE_DIR}/test/references/test_impes-reference-parallel.vtu
+                           ${CMAKE_CURRENT_BINARY_DIR}/s0002-p0001-test_impeswithamg-00094.vtu
+                   --command "${MPIEXEC} -np 2 ${CMAKE_CURRENT_BINARY_DIR}/test_impeswithamg -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_impeswithamg.input -TimeManager.TEnd 7e7")
 else()
   add_dumux_test(test_impeswithamg test_impeswithamg test_impeswithamg.cc
-    ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-    ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-    ${CMAKE_SOURCE_DIR}/test/references/test_impes-reference.vtu
-    ${CMAKE_CURRENT_BINARY_DIR}/test_impeswithamg-00009.vtu
-    ${CMAKE_CURRENT_BINARY_DIR}/test_impeswithamg)
+                 python${CMAKE_SOURCE_DIR}/bin/runtest.py
+                   --script fuzzy
+                   --files ${CMAKE_SOURCE_DIR}/test/references/test_impes-reference.vtu
+                           ${CMAKE_CURRENT_BINARY_DIR}/test_impeswithamg-00009.vtu
+                   --command "${CMAKE_CURRENT_BINARY_DIR}/test_impeswithamg")
 endif(MPI_FOUND)
 
 add_dumux_test(test_transport test_transport test_transport.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/test_transport-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_transport-00006.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_transport)
+               python${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/test_transport-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/test_transport-00006.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_transport")
 
 add_dumux_test(test_mpfao2p test_mpfa2p test_mpfa2p.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/test_mpfao2p-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_mpfa2p-00007.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_mpfa2p
-  -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_mpfa2p.input
-  -ModelType MPFAO)
+               python${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/test_mpfao2p-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/test_mpfa2p-00007.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_mpfa2p -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_mpfa2p.input -ModelType MPFAO")
 
 add_dumux_test(test_mpfal2p test_mpfa2p test_mpfa2p.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/test_mpfal2p-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_mpfa2p-00007.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_mpfa2p
-  -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_mpfa2p.input
-  -ModelType MPFAL)
+               python${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/test_mpfal2p-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/test_mpfa2p-00007.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_mpfa2p -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_mpfa2p.input -ModelType MPFAL")
 
 add_dumux_test(test_mpfal2padaptive test_mpfa2p test_mpfa2p.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/test_mpfal2padaptive-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_mpfa2p-00007.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_mpfa2p
-  -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_mpfa2p.input
-  -ModelType MPFALAdaptive)
+               python${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/test_mpfal2padaptive-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/test_mpfa2p-00007.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_mpfa2p -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_mpfa2p.input -ModelType MPFALAdaptive")
 
 add_dumux_test(test_3d2pfv test_3d2pfv test_3d2p.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/test_3d2pfv-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_3d2pfv-00012.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_3d2pfv
-  -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_3d2p.input
-  -Problem.OutputName test_3d2pfv
-  -ModelType FV)
+               python${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/test_3d2pfv-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/test_3d2pfv-00012.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_3d2pfv -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_3d2p.input -Problem.OutputName test_3d2pfv -ModelType FV")
 
 add_dumux_test(test_3d2pfvadaptive test_3d2pfvadaptive test_3d2p.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/test_3d2pfvadaptive-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_3d2pfvadaptive-00012.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_3d2pfvadaptive
-  -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_3d2p.input
-  -Problem.OutputName test_3d2pfvadaptive
-  -ModelType FVAdaptive)
+               python${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/test_3d2pfvadaptive-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/test_3d2pfvadaptive-00012.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_3d2pfvadaptive -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_3d2p.input -Problem.OutputName test_3d2pfvadaptive -ModelType FVAdaptive")
 
 add_dumux_test(test_3d2pmimetic test_3d2pmimetic test_3d2p.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/test_3d2pmimetic-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_3d2pmimetic-00012.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_3d2pmimetic
-  -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_3d2p.input
-  -Problem.OutputName test_3d2pmimetic
-  -ModelType Mimetic)
+               python${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/test_3d2pmimetic-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/test_3d2pmimetic-00012.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_3d2pmimetic -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_3d2p.input -Problem.OutputName test_3d2pmimetic -ModelType Mimetic")
 
 add_dumux_test(test_3d2pmimeticadaptive test_3d2pmimeticadaptive test_3d2p.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/test_3d2pmimeticadaptive-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_3d2pmimeticadaptive-00012.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_3d2pmimeticadaptive
-  -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_3d2p.input
-  -Problem.OutputName test_3d2pmimeticadaptive
-  -ModelType MimeticAdaptive)
+               python${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/test_3d2pmimeticadaptive-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/test_3d2pmimeticadaptive-00012.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_3d2pmimeticadaptive -Problem.OutputName test_3d2pmimeticadaptive -ModelType MimeticAdaptive")
 
 add_dumux_test(test_3d2pmpfal test_3d2pmpfal test_3d2p.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/test_3d2pmpfal-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_3d2pmpfal-00012.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_3d2pmpfal
-  -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_3d2p.input
-  -Problem.OutputName test_3d2pmpfal
-  -ModelType MPFAL)
+               python${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/test_3d2pmpfal-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/test_3d2pmpfal-00012.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_3d2pmpfal -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_3d2p.input -Problem.OutputName test_3d2pmpfal -ModelType MPFAL")
 
 add_dumux_test(test_3d2pmpfaladaptive test_3d2pmpfaladaptive test_3d2p.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/test_3d2pmpfaladaptive-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_3d2pmpfaladaptive-00012.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_3d2pmpfaladaptive
-  -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_3d2p.input
-  -Problem.OutputName test_3d2pmpfaladaptive
-  -ModelType MPFALAdaptive)
+               python${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/test_3d2pmpfaladaptive-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/test_3d2pmpfaladaptive-00012.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_3d2pmpfaladaptive -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_3d2p.input -Problem.OutputName test_3d2pmpfaladaptive -ModelType MPFALAdaptive")
 
diff --git a/test/decoupled/2p2c/CMakeLists.txt b/test/decoupled/2p2c/CMakeLists.txt
index 5b4d5c116380b72ff3c18eb99518f2a62fa346bf..560bcf4c02d085c88c5e669b335314c4a974c48f 100644
--- a/test/decoupled/2p2c/CMakeLists.txt
+++ b/test/decoupled/2p2c/CMakeLists.txt
@@ -1,27 +1,27 @@
 add_dumux_test(test_adaptive2p2c2d test_adaptive2p2c2d test_adaptive2p2c2d.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/test_adaptive2p2c2d-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_adaptive2p2c2d-00008.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_adaptive2p2c2d)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+               --script fuzzy
+               --files ${CMAKE_SOURCE_DIR}/test/references/test_adaptive2p2c2d-reference.vtu
+                       ${CMAKE_CURRENT_BINARY_DIR}/test_adaptive2p2c2d-00008.vtu
+               --command "${CMAKE_CURRENT_BINARY_DIR}/test_adaptive2p2c2d")
 
 add_dumux_test(test_adaptive2p2c3d test_adaptive2p2c3d test_adaptive2p2c3d.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/test_adaptive2p2c3d-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_adaptive2p2c3d-00012.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_adaptive2p2c3d)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+               --script fuzzy
+               --files ${CMAKE_SOURCE_DIR}/test/references/test_adaptive2p2c3d-reference.vtu
+                       ${CMAKE_CURRENT_BINARY_DIR}/test_adaptive2p2c3d-00012.vtu
+               --command "${CMAKE_CURRENT_BINARY_DIR}/test_adaptive2p2c3d")
 
 add_dumux_test(test_dec2p2c test_dec2p2c test_dec2p2c.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/test_dec2p2c-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_dec2p2c-00021.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_dec2p2c)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+               --script fuzzy
+               --files ${CMAKE_SOURCE_DIR}/test/references/test_dec2p2c-reference.vtu
+                       ${CMAKE_CURRENT_BINARY_DIR}/test_dec2p2c-00021.vtu
+               --command "${CMAKE_CURRENT_BINARY_DIR}/test_dec2p2c")
 
 add_dumux_test(test_multiphysics2p2c test_multiphysics2p2c test_multiphysics2p2c.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/test_multiphysics2p2c-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_multiphysics2p2c-00021.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_multiphysics2p2c)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+               --script fuzzy
+               --files ${CMAKE_SOURCE_DIR}/test/references/test_multiphysics2p2c-reference.vtu
+                       ${CMAKE_CURRENT_BINARY_DIR}/test_multiphysics2p2c-00021.vtu
+               --command "${CMAKE_CURRENT_BINARY_DIR}/test_multiphysics2p2c")
diff --git a/test/geomechanics/el1p2c/CMakeLists.txt b/test/geomechanics/el1p2c/CMakeLists.txt
index 662c4c3c22c0333ddf0323be9781463c4a0dacc9..b9b17709963f59c14db997dafe2e5799ad59826c 100644
--- a/test/geomechanics/el1p2c/CMakeLists.txt
+++ b/test/geomechanics/el1p2c/CMakeLists.txt
@@ -1,6 +1,6 @@
 add_dumux_test(test_el1p2c test_el1p2c test_el1p2c.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/el1p2c-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/el1p2c-00015.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_el1p2c)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/el1p2c-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/el1p2c-00015.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_el1p2c")
diff --git a/test/geomechanics/el2p/CMakeLists.txt b/test/geomechanics/el2p/CMakeLists.txt
index 48d0ba1ad02b3786ab8bf29abe313ca0c65c19a2..d1dbf22e1c5a8396d17dc3049272f228c710c0d6 100644
--- a/test/geomechanics/el2p/CMakeLists.txt
+++ b/test/geomechanics/el2p/CMakeLists.txt
@@ -1,17 +1,15 @@
 add_dumux_test(test_el2p test_el2p test_el2p.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/el2p-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/el2p-00003.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_el2p
-  ${CMAKE_CURRENT_SOURCE_DIR}/grids/test_el2p.dgf 100 200 100)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/el2p-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/el2p-00003.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_el2p ${CMAKE_CURRENT_SOURCE_DIR}/grids/test_el2p.dgf 100 200 100")
 
 if(MPI_FOUND)
   add_dumux_test(test_el2p_parallel test_el2p_parallel test_el2p.cc
-    ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-    ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-    ${CMAKE_SOURCE_DIR}/test/references/el2p-parallel-reference.vtu
-    ${CMAKE_CURRENT_BINARY_DIR}/s0004-p0001-el2p-00003.vtu
-    "${MPIEXEC} -np 4 ${CMAKE_CURRENT_BINARY_DIR}/test_el2p_parallel"
-    ${CMAKE_CURRENT_SOURCE_DIR}/grids/test_el2p.dgf 100 200 100)
+                 python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                   --script fuzzy
+                   --files ${CMAKE_SOURCE_DIR}/test/references/el2p-parallel-reference.vtu
+                           ${CMAKE_CURRENT_BINARY_DIR}/s0004-p0001-el2p-00003.vtu
+                   --command "${MPIEXEC} -np 4 ${CMAKE_CURRENT_BINARY_DIR}/test_el2p_parallel ${CMAKE_CURRENT_SOURCE_DIR}/grids/test_el2p.dgf 100 200 100")
 endif(MPI_FOUND)
diff --git a/test/geomechanics/elastic/CMakeLists.txt b/test/geomechanics/elastic/CMakeLists.txt
index 65c20e8fe1f7133ac4620913294c8c948909d910..6dbe6b6028ecfa0e2eaa9b902c954c2f3f2b9c6b 100644
--- a/test/geomechanics/elastic/CMakeLists.txt
+++ b/test/geomechanics/elastic/CMakeLists.txt
@@ -1,6 +1,6 @@
 add_dumux_test(test_elastic test_elastic test_elastic.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/elasticmatrix-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/elasticmatrix-00002.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_elastic)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/elasticmatrix-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/elasticmatrix-00002.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_elastic")
diff --git a/test/implicit/1p/CMakeLists.txt b/test/implicit/1p/CMakeLists.txt
index 41e631e5e1986e6dcea62956ed9fd2f5bb0d39bd..151956adc10132717ced0ede6ba473327977f59e 100644
--- a/test/implicit/1p/CMakeLists.txt
+++ b/test/implicit/1p/CMakeLists.txt
@@ -1,91 +1,91 @@
 # isothermal tests
 add_dumux_test(test_box1p test_box1p test_box1p.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/1ptestbox-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/1ptestbox-00002.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_box1p)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/1ptestbox-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/1ptestbox-00002.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_box1p")
 
 add_dumux_test(test_box1pwithamg test_box1pwithamg test_box1pwithamg.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/1ptestbox-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/1ptestboxwithamg-00002.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_box1pwithamg)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/1ptestbox-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/1ptestboxwithamg-00002.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_box1pwithamg")
 
 add_dumux_test(test_cc1p test_cc1p test_cc1p.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/1ptestcc-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/1ptestcc-00002.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_cc1p)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/1ptestcc-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/1ptestcc-00002.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_cc1p")
 
 add_dumux_test(test_cc1pwithamg test_cc1pwithamg test_cc1pwithamg.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/1ptestcc-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/1ptestccwithamg-00002.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_cc1pwithamg)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/1ptestcc-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/1ptestccwithamg-00002.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_cc1pwithamg")
 
 # non-isothermal tests
 add_dumux_test(test_box1pniconduction test_box1pniconduction test_box1pniconduction.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/1pniboxconduction-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/box1pniconduction-00007.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_box1pniconduction)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/1pniboxconduction-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/box1pniconduction-00007.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_box1pniconduction")
 
 add_dumux_test(test_box1pniconvection test_box1pniconvection test_box1pniconvection.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/1pniboxconvection-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/box1pniconvection-00011.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_box1pniconvection)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/1pniboxconvection-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/box1pniconvection-00011.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_box1pniconvection")
 
 add_dumux_test(test_cc1pniconduction test_cc1pniconduction test_cc1pniconduction.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/1pniccconduction-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/cc1pniconduction-00007.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_cc1pniconduction)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/1pniccconduction-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/cc1pniconduction-00007.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_cc1pniconduction")
 
 add_dumux_test(test_cc1pniconvection test_cc1pniconvection test_cc1pniconvection.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/1pniccconvection-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/cc1pniconvection-00011.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_cc1pniconvection)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/1pniccconvection-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/cc1pniconvection-00011.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_cc1pniconvection")
 
 # dim < dimWorld tests
 add_dumux_test(test_box1p1d3d test_box1p1d3d test_box1p1d3d.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/1ptestbox1d3d-reference.vtp
-  ${CMAKE_CURRENT_BINARY_DIR}/1ptestbox1d3d-00002.vtp
-  ${CMAKE_CURRENT_BINARY_DIR}/test_box1p1d3d)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/1ptestbox1d3d-reference.vtp
+                         ${CMAKE_CURRENT_BINARY_DIR}/1ptestbox1d3d-00002.vtp
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_box1p1d3d")
 add_dune_alberta_flags(test_box1p1d3d GRIDDIM 1 WORLDDIM 3)
 
 add_dumux_test(test_box1p2d3d test_box1p2d3d test_box1p2d3d.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/1ptestbox2d3d-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/1ptestbox2d3d-00002.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_box1p2d3d)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/1ptestbox2d3d-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/1ptestbox2d3d-00002.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_box1p2d3d")
 add_dune_alberta_flags(test_box1p2d3d GRIDDIM 2 WORLDDIM 3)
 
 add_dumux_test(test_cc1p1d3d test_cc1p1d3d test_cc1p1d3d.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/1ptestcc1d3d-reference.vtp
-  ${CMAKE_CURRENT_BINARY_DIR}/1ptestcc1d3d-00002.vtp
-  ${CMAKE_CURRENT_BINARY_DIR}/test_cc1p1d3d)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/1ptestcc1d3d-reference.vtp
+                         ${CMAKE_CURRENT_BINARY_DIR}/1ptestcc1d3d-00002.vtp
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_cc1p1d3d")
 add_dune_alberta_flags(test_cc1p1d3d GRIDDIM 1 WORLDDIM 3)
 
 add_dumux_test(test_cc1p2d3d test_cc1p2d3d test_cc1p2d3d.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/1ptestcc2d3d-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/1ptestcc2d3d-00002.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_cc1p2d3d)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/1ptestcc2d3d-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/1ptestcc2d3d-00002.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_cc1p2d3d")
 add_dune_alberta_flags(test_cc1p2d3d GRIDDIM 2 WORLDDIM 3)
 
diff --git a/test/implicit/1p2c/CMakeLists.txt b/test/implicit/1p2c/CMakeLists.txt
index d57bfeb900d2eb7ae94fb4655d94f6a46d72a4a4..3845efc700f4f090e5122b3d03d26055bc331b02 100644
--- a/test/implicit/1p2c/CMakeLists.txt
+++ b/test/implicit/1p2c/CMakeLists.txt
@@ -1,43 +1,43 @@
 # isothermal tests
 add_dumux_test(test_box1p2c test_box1p2c test_box1p2c.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/outflowbox-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/outflowbox-00010.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_box1p2c)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/outflowbox-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/outflowbox-00010.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_box1p2c")
 
 add_dumux_test(test_cc1p2c test_cc1p2c test_cc1p2c.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/outflowcc-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/outflowcc-00010.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_cc1p2c)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/outflowcc-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/outflowcc-00010.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_cc1p2c")
 
 # non-isothermal tests
 add_dumux_test(test_box1p2cniconduction test_box1p2cniconduction test_box1p2cniconduction.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/1p2cniboxconduction-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/box1p2cniconduction-00007.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_box1p2cniconduction)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/1p2cniboxconduction-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/box1p2cniconduction-00007.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_box1p2cniconduction")
 
 add_dumux_test(test_box1p2cniconvection test_box1p2cniconvection test_box1p2cniconvection.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/1p2cniboxconvection-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/box1p2cniconvection-00011.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_box1p2cniconvection)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/1p2cniboxconvection-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/box1p2cniconvection-00011.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_box1p2cniconvection")
 
 add_dumux_test(test_cc1p2cniconduction test_cc1p2cniconduction test_cc1p2cniconduction.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/1p2cniccconduction-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/cc1p2cniconduction-00007.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_cc1p2cniconduction)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/1p2cniccconduction-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/cc1p2cniconduction-00007.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_cc1p2cniconduction")
 
 add_dumux_test(test_cc1p2cniconvection test_cc1p2cniconvection test_cc1p2cniconvection.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/1p2cniccconvection-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/cc1p2cniconvection-00011.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_cc1p2cniconvection)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/1p2cniccconvection-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/cc1p2cniconvection-00011.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_cc1p2cniconvection")
diff --git a/test/implicit/2p/CMakeLists.txt b/test/implicit/2p/CMakeLists.txt
index 15b24f55a70efb96f95b33251aed5c18e1603b1c..cb71a1362b6e32e6694af6b7c10fe58ecd96ae46 100644
--- a/test/implicit/2p/CMakeLists.txt
+++ b/test/implicit/2p/CMakeLists.txt
@@ -1,62 +1,61 @@
 # isothermal tests
 add_dumux_test(test_box2p test_box2p test_box2p.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/lensbox-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/lensbox-00009.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_box2p)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/lensbox-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/lensbox-00009.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_box2p")
 
 add_dumux_test(test_boxadaptive2p test_boxadaptive2p test_boxadaptive2p.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/lensboxadaptive-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/lensboxadaptive-00015.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_boxadaptive2p)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/lensboxadaptive-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/lensboxadaptive-00015.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_boxadaptive2p")
 
 add_dumux_test(test_cc2p test_cc2p test_cc2p.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/lenscc-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/lenscc-00009.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_cc2p)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/lenscc-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/lenscc-00009.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_cc2p")
 
 add_dumux_test(test_ccadaptive2p test_ccadaptive2p test_ccadaptive2p.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/lensccadaptive-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/lensccadaptive-00018.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_ccadaptive2p)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/lensccadaptive-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/lensccadaptive-00018.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_ccadaptive2p")
 
 # non-isothermal tests
-
 if(HAVE_UG)
 add_dumux_test(test_box2pni test_box2pni test_box2pni.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/injection2pnibox-simplex-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/injection2pnibox-00008.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_box2pni)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/injection2pnibox-simplex-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/injection2pnibox-00008.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_box2pni")
 else()
 add_dumux_test(test_box2pni test_box2pni test_box2pni.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/injection2pnibox-cube-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/injection2pnibox-00008.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_box2pni)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/injection2pnibox-cube-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/injection2pnibox-00008.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_box2pni")
 endif(HAVE_UG)
 
 if(HAVE_UG)
 add_dumux_test(test_cc2pni test_cc2pni test_cc2pni.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/injection2pnicc-simplex-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/injection2pnicc-00009.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_cc2pni)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/injection2pnicc-simplex-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/injection2pnicc-00009.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_cc2pni")
 else()
 add_dumux_test(test_cc2pni test_cc2pni test_cc2pni.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/injection2pnicc-cube-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/injection2pnicc-00009.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_cc2pni)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/injection2pnicc-cube-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/injection2pnicc-00009.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_cc2pni")
 endif(HAVE_UG)
diff --git a/test/implicit/2p2c/CMakeLists.txt b/test/implicit/2p2c/CMakeLists.txt
index 013e45c525808fd0fb7bd2c733cf4bd411431ba8..c136298538ae1b026f3302125ac4c15805c2bf48 100644
--- a/test/implicit/2p2c/CMakeLists.txt
+++ b/test/implicit/2p2c/CMakeLists.txt
@@ -1,31 +1,29 @@
 # isothermal tests
 add_dumux_test(test_box2p2c test_box2p2c test_box2p2c.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/injectionbox-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/injectionbox-00009.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_box2p2c)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/injectionbox-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/injectionbox-00009.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_box2p2c")
 
 add_dumux_test(test_cc2p2c test_cc2p2c test_cc2p2c.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/injectioncc-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/injectioncc-00009.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_cc2p2c)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/injectioncc-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/injectioncc-00009.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_cc2p2c")
 
 # non-isothermal tests
 add_dumux_test(test_box2p2cni test_box2p2cni test_box2p2cni.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/waterairbox-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/waterairbox-00010.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_box2p2cni
-  -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_box2p2cni_reference.input)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/waterairbox-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/waterairbox-00010.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_box2p2cni -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_box2p2cni_reference.input")
 
 add_dumux_test(test_cc2p2cni test_cc2p2cni test_cc2p2cni.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/wateraircc-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/wateraircc-00010.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_cc2p2cni
-  -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_cc2p2cni_reference.input)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/wateraircc-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/wateraircc-00010.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_cc2p2cni -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_cc2p2cni_reference.input")
diff --git a/test/implicit/2pdfm/CMakeLists.txt b/test/implicit/2pdfm/CMakeLists.txt
index d8606118eac27c9c29d6a4594c7d71de238abad3..d21f37c9a5f52e19c18c5ce020caceeaf6c9fdc8 100644
--- a/test/implicit/2pdfm/CMakeLists.txt
+++ b/test/implicit/2pdfm/CMakeLists.txt
@@ -1,6 +1,6 @@
 add_dumux_test(test_2pdfm test_2pdfm test_2pdfm.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/2pdfm-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/2pdfm-00011.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_2pdfm)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/2pdfm-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/2pdfm-00011.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_2pdfm")
diff --git a/test/implicit/3p/CMakeLists.txt b/test/implicit/3p/CMakeLists.txt
index 87a13a4b3e812fc30dd26ba5f9e7f5f2b39da029..95564aeb4dad0311e05c783224d7db7446b3445d 100644
--- a/test/implicit/3p/CMakeLists.txt
+++ b/test/implicit/3p/CMakeLists.txt
@@ -1,43 +1,43 @@
 # isothermal tests
 add_dumux_test(test_box3p test_box3p test_box3p.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/infiltration3pbox-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/infiltration3pbox-00009.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_box3p)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/infiltration3pbox-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/infiltration3pbox-00009.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_box3p")
 
 add_dumux_test(test_cc3p test_cc3p test_cc3p.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/infiltration3pcc-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/infiltration3pcc-00009.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_cc3p)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/infiltration3pcc-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/infiltration3pcc-00009.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_cc3p")
 
 # non-isothermal tests
 add_dumux_test(test_box3pniconvection test_box3pniconvection test_box3pniconvection.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/3pniconvectionbox-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_box3pniconvection-00011.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_box3pniconvection)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/3pniconvectionbox-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/test_box3pniconvection-00011.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_box3pniconvection")
 
 add_dumux_test(test_cc3pniconvection test_cc3pniconvection test_cc3pniconvection.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/3pniconvectioncc-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_cc3pniconvection-00011.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_cc3pniconvection)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/3pniconvectioncc-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/test_cc3pniconvection-00011.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_cc3pniconvection")
 
 add_dumux_test(test_box3pniconduction test_box3pniconduction test_box3pniconduction.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/3pniconductionbox-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_box3pniconduction-00007.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_box3pniconduction)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/3pniconductionbox-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/test_box3pniconduction-00007.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_box3pniconduction")
 
 add_dumux_test(test_cc3pniconduction test_cc3pniconduction test_cc3pniconduction.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/3pniconductioncc-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_cc3pniconduction-00007.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_cc3pniconduction)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/3pniconductioncc-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/test_cc3pniconduction-00007.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_cc3pniconduction")
diff --git a/test/implicit/3p3c/CMakeLists.txt b/test/implicit/3p3c/CMakeLists.txt
index b34f5af9f10991bb6db7e00d973ae6ca73825e1d..9d27ca73e7954d39d1ecc4eddf7513062a7f2066 100644
--- a/test/implicit/3p3c/CMakeLists.txt
+++ b/test/implicit/3p3c/CMakeLists.txt
@@ -1,41 +1,39 @@
 # isothermal tests
 add_dumux_test(test_box3p3c test_box3p3c test_box3p3c.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/infiltrationbox-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/box3p3c-00007.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_box3p3c
-  -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_box3p3c_reference.input)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/infiltrationbox-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/box3p3c-00007.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_box3p3c -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_box3p3c_reference.input")
 
 add_dumux_test(test_cc3p3c test_cc3p3c test_cc3p3c.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/infiltrationcc-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/cc3p3c-00006.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_cc3p3c
-  -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_cc3p3c_reference.input)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/infiltrationcc-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/cc3p3c-00006.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_cc3p3c -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_cc3p3c_reference.input")
 
 # non-isothermal tests
 add_dumux_test(test_box3p3cnicolumnxylol test_box3p3cnicolumnxylol test_box3p3cnicolumnxylol.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/column3p3cnibox-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/columnxylolbox-00058.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_box3p3cnicolumnxylol)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/column3p3cnibox-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/columnxylolbox-00058.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_box3p3cnicolumnxylol")
 
 add_dumux_test(test_cc3p3cnicolumnxylol test_cc3p3cnicolumnxylol test_cc3p3cnicolumnxylol.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/column3p3cnicc-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/columnxylolcc-00054.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_cc3p3cnicolumnxylol)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/column3p3cnicc-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/columnxylolcc-00054.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_cc3p3cnicolumnxylol")
 
 add_dumux_test(test_box3p3cnikuevette test_box3p3cnikuevette test_box3p3cnikuevette.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/kuevette3p3cnibox-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/kuevettebox-00013.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_box3p3cnikuevette)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/kuevette3p3cnibox-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/kuevettebox-00013.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_box3p3cnikuevette")
 
 # with Dune 2.3 we have 14 time steps, with Dune 2.4 we have 12
 # remove this code if support for Dune 2.3 is dropped
@@ -44,8 +42,8 @@ if(("${DUNE_COMMON_VERSION_MAJOR}" STREQUAL "2") AND ("${DUNE_COMMON_VERSION_MIN
   set(REF_FILE_NUMBER "14")
 endif()
 add_dumux_test(test_cc3p3cnikuevette test_cc3p3cnikuevette test_cc3p3cnikuevette.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/kuevette3p3cnicc-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/kuevettecc-000${REF_FILE_NUMBER}.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_cc3p3cnikuevette)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/kuevette3p3cnicc-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/kuevettecc-000${REF_FILE_NUMBER}.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_cc3p3cnikuevette")
diff --git a/test/implicit/co2/CMakeLists.txt b/test/implicit/co2/CMakeLists.txt
index c52c6719c8e61cbdd094a8788bd1644bb065e38f..58aa9e8fc6cce3e7c0eb566d694e32f5373d92cd 100644
--- a/test/implicit/co2/CMakeLists.txt
+++ b/test/implicit/co2/CMakeLists.txt
@@ -1,39 +1,38 @@
 # build target for the CO2 test problem
 add_dumux_test(test_boxco2 test_boxco2 test_boxco2.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/co2box-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/heterogeneousbox-00020.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_boxco2)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/co2box-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/heterogeneousbox-00020.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_boxco2")
 
 add_dumux_test(test_ccco2 test_ccco2 test_ccco2.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/co2cc-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/heterogeneouscc-00019.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_ccco2)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/co2cc-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/heterogeneouscc-00019.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_ccco2")
 
 add_dumux_test(test_restartco2 test_ccco2 test_ccco2.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/co2box-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/heterogeneousbox-00020.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_boxco2
-  -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_restartco2.input)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/co2box-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/heterogeneousbox-00020.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_boxco2 -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_restartco2.input")
 
   # build target for the CO2 non-isothermal test problem
 add_dumux_test(test_boxco2ni test_boxco2ni test_boxco2ni.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/co2nibox-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/heterogeneousboxni-00020.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_boxco2ni)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/co2nibox-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/heterogeneousboxni-00020.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_boxco2ni")
 
 add_dumux_test(test_ccco2ni test_ccco2ni test_ccco2ni.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/co2nicc-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/heterogeneousccni-00019.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_ccco2ni)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/co2nicc-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/heterogeneousccni-00019.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_ccco2ni")
 
 
diff --git a/test/implicit/mpnc/CMakeLists.txt b/test/implicit/mpnc/CMakeLists.txt
index d0bd9d586da0a6e59568db697c9d3dfe3707245b..6414c922e89e3a7573b470d86fe5128398f13de3 100644
--- a/test/implicit/mpnc/CMakeLists.txt
+++ b/test/implicit/mpnc/CMakeLists.txt
@@ -1,45 +1,45 @@
 add_dumux_test(test_boxmpnc test_boxmpnc test_boxmpnc.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/obstaclebox-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/obstaclebox-00010.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_boxmpnc)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/obstaclebox-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/obstaclebox-00010.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_boxmpnc")
 
 add_dumux_test(test_ccmpnc test_ccmpnc test_ccmpnc.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/obstaclecc-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/obstaclecc-00010.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_ccmpnc)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/obstaclecc-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/obstaclecc-00010.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_ccmpnc")
 
 # build target for the one-phase Forchheimer test problem
 add_dumux_test(test_forchheimer1p test_forchheimer1p test_forchheimer1p.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/forchheimer1p-reference.vtp
-  ${CMAKE_CURRENT_BINARY_DIR}/test_forchheimer1p-00002.vtp
-  ${CMAKE_CURRENT_BINARY_DIR}/test_forchheimer1p)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/forchheimer1p-reference.vtp
+                         ${CMAKE_CURRENT_BINARY_DIR}/test_forchheimer1p-00002.vtp
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_forchheimer1p")
 
 # build target for the two-phase Forchheimer test problem
 add_dumux_test(test_forchheimer2p test_forchheimer2p test_forchheimer2p.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/forchheimer2p-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_forchheimer2p-00009.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_forchheimer2p)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/forchheimer2p-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/test_forchheimer2p-00009.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_forchheimer2p")
 
 # build target for the full kinetic test problem
 add_dumux_test(test_boxmpnckinetic test_boxmpnckinetic test_boxmpnckinetic.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/evaporationatmosphere-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/evaporationatmosphere-00006.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_boxmpnckinetic)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/evaporationatmosphere-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/evaporationatmosphere-00006.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_boxmpnckinetic")
 
   # build target for the energy kinetic test problem, two energy balance equations
 add_dumux_test(test_boxmpncthermalnonequil test_boxmpncthermalnonequil test_boxmpncthermalnonequil.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/combustion-reference.vtp
-  ${CMAKE_CURRENT_BINARY_DIR}/combustion-00078.vtp
-  ${CMAKE_CURRENT_BINARY_DIR}/test_boxmpncthermalnonequil)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/combustion-reference.vtp
+                         ${CMAKE_CURRENT_BINARY_DIR}/combustion-00078.vtp
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_boxmpncthermalnonequil")
diff --git a/test/implicit/richards/CMakeLists.txt b/test/implicit/richards/CMakeLists.txt
index 354b7ad94b1ce96d1b8de80286a48aa820bb357c..0ab04cc2d447cdddab3741b68697b66307b90a1d 100644
--- a/test/implicit/richards/CMakeLists.txt
+++ b/test/implicit/richards/CMakeLists.txt
@@ -1,52 +1,52 @@
 if(MPI_CXX_FOUND)
   add_dumux_test(test_boxrichards test_boxrichards test_boxrichards.cc
-    ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-    ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-    ${CMAKE_SOURCE_DIR}/test/references/richardslensbox-reference-parallel.vtu
-    ${CMAKE_CURRENT_BINARY_DIR}/s0002-p0000-richardslensbox-00008.vtu
-    "${MPIEXEC} -np 2 ${CMAKE_CURRENT_BINARY_DIR}/test_boxrichards")
+                 python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                   --script fuzzy
+                   --files ${CMAKE_SOURCE_DIR}/test/references/richardslensbox-reference-parallel.vtu
+                           ${CMAKE_CURRENT_BINARY_DIR}/s0002-p0000-richardslensbox-00008.vtu
+                   --command "${MPIEXEC} -np 2 ${CMAKE_CURRENT_BINARY_DIR}/test_boxrichards")
 else()
 # isothermal tests
   add_dumux_test(test_boxrichards test_boxrichards test_boxrichards.cc
-    ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-    ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-    ${CMAKE_SOURCE_DIR}/test/references/richardslensbox-reference.vtu
-    ${CMAKE_CURRENT_BINARY_DIR}/richardslensbox-00008.vtu
-    ${CMAKE_CURRENT_BINARY_DIR}/test_boxrichards)
+                 python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                   --script fuzzy
+                   --files ${CMAKE_SOURCE_DIR}/test/references/richardslensbox-reference.vtu
+                           ${CMAKE_CURRENT_BINARY_DIR}/richardslensbox-00008.vtu
+                   --command "${CMAKE_CURRENT_BINARY_DIR}/test_boxrichards")
 endif(MPI_CXX_FOUND)
 
 add_dumux_test(test_ccrichards test_ccrichards test_ccrichards.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/richardslenscc-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/richardslenscc-00008.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_ccrichards)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/richardslenscc-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/richardslenscc-00008.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_ccrichards")
 
 # non-isothermal tests
 add_dumux_test(test_boxrichardsniconvection test_boxrichardsniconvection test_boxrichardsniconvection.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/richardsniconvectionbox-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_boxrichardsniconvection-00011.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_boxrichardsniconvection)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/richardsniconvectionbox-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/test_boxrichardsniconvection-00011.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_boxrichardsniconvection")
 
 add_dumux_test(test_ccrichardsniconvection test_ccrichardsniconvection test_ccrichardsniconvection.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/richardsniconvectioncc-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_ccrichardsniconvection-00011.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_ccrichardsniconvection)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/richardsniconvectioncc-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/test_ccrichardsniconvection-00011.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_ccrichardsniconvection")
 
 add_dumux_test(test_boxrichardsniconduction test_boxrichardsniconduction test_boxrichardsniconduction.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/richardsniconductionbox-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_boxrichardsniconduction-00007.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_boxrichardsniconduction)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/richardsniconductionbox-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/test_boxrichardsniconduction-00007.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_boxrichardsniconduction")
 
 add_dumux_test(test_ccrichardsniconduction test_ccrichardsniconduction test_ccrichardsniconduction.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py
-  ${CMAKE_SOURCE_DIR}/test/references/richardsniconductioncc-reference.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_ccrichardsniconduction-00007.vtu
-  ${CMAKE_CURRENT_BINARY_DIR}/test_ccrichardsniconduction)
\ No newline at end of file
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script fuzzy
+                 --files ${CMAKE_SOURCE_DIR}/test/references/richardsniconductioncc-reference.vtu
+                         ${CMAKE_CURRENT_BINARY_DIR}/test_ccrichardsniconduction-00007.vtu
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_ccrichardsniconduction")
\ No newline at end of file
diff --git a/test/material/fluidmatrixinteractions/2p/CMakeLists.txt b/test/material/fluidmatrixinteractions/2p/CMakeLists.txt
index 85d920aae18ff8261cba104905a158c59988a19c..643e2aab02f5c8bca3dfc9b87de8a16c23178de7 100644
--- a/test/material/fluidmatrixinteractions/2p/CMakeLists.txt
+++ b/test/material/fluidmatrixinteractions/2p/CMakeLists.txt
@@ -1,23 +1,13 @@
 add_dumux_test(test_thermalconductivityjohansen test_thermalconductivityjohansen test_thermalconductivityjohansen.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  exact
-  ${CMAKE_SOURCE_DIR}/test/references/thermalconductivityjohansen-reference.dat
-  ${CMAKE_CURRENT_BINARY_DIR}/johansen_lambda_eff.dat
-  ${CMAKE_CURRENT_BINARY_DIR}/test_thermalconductivityjohansen
-   -TimeManager.DtInitial 1 # [s]
-   -TimeManager.TEnd 2 # [s]
-   -Grid.File ${CMAKE_SOURCE_DIR}/test/implicit/2p/grids/test_2p.dgf
-   -Conductivity.File johansen
-)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script exact
+                 --files ${CMAKE_SOURCE_DIR}/test/references/thermalconductivityjohansen-reference.dat
+                         ${CMAKE_CURRENT_BINARY_DIR}/johansen_lambda_eff.dat
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_thermalconductivityjohansen")
 
 add_dumux_test(test_thermalconductivitysomerton test_thermalconductivitysomerton test_thermalconductivitysomerton.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  exact
-  ${CMAKE_SOURCE_DIR}/test/references/thermalconductivitysomerton-reference.dat
-  ${CMAKE_CURRENT_BINARY_DIR}/somerton_lambda_eff.dat
-  ${CMAKE_CURRENT_BINARY_DIR}/test_thermalconductivitysomerton
-   -TimeManager.DtInitial 1 # [s]
-   -TimeManager.TEnd 2 # [s]
-   -Grid.File ${CMAKE_SOURCE_DIR}/test/implicit/2p/grids/test_2p.dgf
-   -Conductivity.File somerton
-)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script exact
+                 --files ${CMAKE_SOURCE_DIR}/test/references/thermalconductivitysomerton-reference.dat
+                         ${CMAKE_CURRENT_BINARY_DIR}/somerton_lambda_eff.dat
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_thermalconductivitysomerton")
diff --git a/test/material/fluidmatrixinteractions/2p/test_thermalconductivityjohansen.input b/test/material/fluidmatrixinteractions/2p/test_thermalconductivityjohansen.input
new file mode 100644
index 0000000000000000000000000000000000000000..4848725a60bf680c98045b0f1c2e0f5310167879
--- /dev/null
+++ b/test/material/fluidmatrixinteractions/2p/test_thermalconductivityjohansen.input
@@ -0,0 +1,9 @@
+[TimeManager]
+DtInitial = 1 # [s]
+TEnd = 2 # [s]
+
+[Grid]
+File = ../../../implicit/2p/grids/test_2p.dgf
+
+[Conductivity]
+File = johansen
\ No newline at end of file
diff --git a/test/material/fluidmatrixinteractions/2p/test_thermalconductivitysomerton.input b/test/material/fluidmatrixinteractions/2p/test_thermalconductivitysomerton.input
new file mode 100644
index 0000000000000000000000000000000000000000..5b58154da104f68261842d4ce76504266489b6c4
--- /dev/null
+++ b/test/material/fluidmatrixinteractions/2p/test_thermalconductivitysomerton.input
@@ -0,0 +1,9 @@
+[TimeManager]
+DtInitial = 1 # [s]
+TEnd = 2 # [s]
+
+[Grid]
+File = ../../../implicit/2p/grids/test_2p.dgf
+
+[Conductivity]
+File = somerton
\ No newline at end of file
diff --git a/test/material/fluidmatrixinteractions/CMakeLists.txt b/test/material/fluidmatrixinteractions/CMakeLists.txt
index 03bc5e786957215130af62df5c578fc9c4c92833..9b5b8e96d08ef6bed79c2c7a8729783e42bf9bea 100644
--- a/test/material/fluidmatrixinteractions/CMakeLists.txt
+++ b/test/material/fluidmatrixinteractions/CMakeLists.txt
@@ -1,26 +1,15 @@
 add_subdirectory("2p")
 
 add_dumux_test(test_effectivediffusivitymillingtonquirk test_effectivediffusivitymillingtonquirk test_effectivediffusivitymillingtonquirk.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  exact
-  ${CMAKE_SOURCE_DIR}/test/references/effectivediffusivitymillingtonquirk-reference.dat
-  ${CMAKE_CURRENT_BINARY_DIR}/millingtonquirk_d_eff.dat
-  ${CMAKE_CURRENT_BINARY_DIR}/test_effectivediffusivitymillingtonquirk
-   -TimeManager.DtInitial 1 # [s]
-   -TimeManager.TEnd 2 # [s]
-   -Grid.File ${CMAKE_SOURCE_DIR}/test/implicit/2p/grids/test_2p.dgf
-   -Diffusivity.File millingtonquirk
-)
+               python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script exact
+                 --files ${CMAKE_SOURCE_DIR}/test/references/effectivediffusivitymillingtonquirk-reference.dat
+                         ${CMAKE_CURRENT_BINARY_DIR}/millingtonquirk_d_eff.dat
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_effectivediffusivitymillingtonquirk")
 
 add_dumux_test(test_effectivediffusivityconstanttau test_effectivediffusivityconstanttau test_effectivediffusivityconstanttau.cc
-  ${CMAKE_SOURCE_DIR}/bin/runTest.sh
-  exact
-  ${CMAKE_SOURCE_DIR}/test/references/effectivediffusivityconstanttau-reference.dat
-  ${CMAKE_CURRENT_BINARY_DIR}/constanttau_d_eff.dat
-  ${CMAKE_CURRENT_BINARY_DIR}/test_effectivediffusivityconstanttau
-   -TimeManager.DtInitial 1 # [s]
-   -TimeManager.TEnd 2 # [s]
-   -Grid.File ${CMAKE_SOURCE_DIR}/test/implicit/2p/grids/test_2p.dgf
-   -Diffusivity.File constanttau
-   -tau 0.3
-)
+              python ${CMAKE_SOURCE_DIR}/bin/runtest.py
+                 --script exact
+                 --files ${CMAKE_SOURCE_DIR}/test/references/effectivediffusivityconstanttau-reference.dat
+                         ${CMAKE_CURRENT_BINARY_DIR}/constanttau_d_eff.dat
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_effectivediffusivityconstanttau")
diff --git a/test/material/fluidmatrixinteractions/test_effectivediffusivityconstanttau.input b/test/material/fluidmatrixinteractions/test_effectivediffusivityconstanttau.input
new file mode 100644
index 0000000000000000000000000000000000000000..5792a25e18f86acdc1b142eddab0cb98eba3b183
--- /dev/null
+++ b/test/material/fluidmatrixinteractions/test_effectivediffusivityconstanttau.input
@@ -0,0 +1,11 @@
+tau = 0.3
+
+[TimeManager]
+DtInitial = 1 # [s]
+TEnd = 2 # [s]
+
+[Grid]
+File = ../../implicit/2p/grids/test_2p.dgf
+
+[Diffusivity]
+File = constanttau
\ No newline at end of file
diff --git a/test/material/fluidmatrixinteractions/test_effectivediffusivitymillingtonquirk.input b/test/material/fluidmatrixinteractions/test_effectivediffusivitymillingtonquirk.input
new file mode 100644
index 0000000000000000000000000000000000000000..89689d8a68f71da2b7b253f0729e2a6047f7d87e
--- /dev/null
+++ b/test/material/fluidmatrixinteractions/test_effectivediffusivitymillingtonquirk.input
@@ -0,0 +1,9 @@
+[TimeManager]
+DtInitial = 1 # [s]
+TEnd = 2 # [s]
+
+[Grid]
+File = ../../implicit/2p/grids/test_2p.dgf
+
+[Diffusivity]
+File = millingtonquirk
\ No newline at end of file