diff --git a/modules/testrunner/app/controllers/testrunner.go b/modules/testrunner/app/controllers/testrunner.go
index <HASH>..<HASH> 100644
--- a/modules/testrunner/app/controllers/testrunner.go
+++ b/modules/testrunner/app/controllers/testrunner.go
@@ -81,11 +81,13 @@ func (c TestRunner) Run(suite, test string) revel.Result {
 			if m := v.MethodByName("Before"); m.IsValid() {
 				m.Call(NONE)
 			}
-			v.MethodByName(test).Call(NONE)
+
 			if m := v.MethodByName("After"); m.IsValid() {
-				m.Call(NONE)
+				defer m.Call(NONE)
 			}
 
+			v.MethodByName(test).Call(NONE)
+
 			// No panic means success.
 			result.Passed = true
 		}()
Fix After not being run on failed test in testrunner