             test = test.parent
         r
     run: (showsMessage = true) ->
+        @resetAllResults()
         if @_fun?
             @_interpret()
             # We use `setTimeout(..., 0)` only to make all tests "unordered", at least theoretically.

        @
    getEnv: ->
        r = $mate.testing.objectClone(@_env)
        @getAncestors().forEach((ancestor) ->
            Object.keys(ancestor._env).forEach((key) ->
                if key not in Object.keys(r) then r[key] = ancestor._env[key]
            )
        )

        @_interpretedFunction = null
        @async = false
        @parent = null
        @resetAllResults()
    resetAllResults: ->
        @unitResults = []
        @result = null
    define: (fun) ->
