private FeatureTestRun RunTest(MethodInfo test, IFrameworkAdapter framework)
        {
            var frameworkType = framework.GetType();
            var specialCase   = GetSpecialCase(test, frameworkType)
                                ?? GetSpecialCase(test.DeclaringType, frameworkType);

            if (specialCase != null && specialCase.Skip)
            {
                return(new FeatureTestRun(test, frameworkType, FeatureTestResult.SkippedDueToSpecialCase, specialCase.Comment));
            }

            var instance = Activator.CreateInstance(test.DeclaringType);

            try {
                test.Invoke(instance, new object[] { framework });
            }
            catch (Exception ex) {
                return(new FeatureTestRun(test, frameworkType, FeatureTestResult.Failure, exception: ToUsefulException(ex)));
            }

            var comment = specialCase != null ? specialCase.Comment : null;

            return(new FeatureTestRun(test, frameworkType, FeatureTestResult.Success, comment));
        }