// xunit's BindingFlags for GetMethods is NonPublic | Public | Instance | Static, which // means all methods for this particular class (public, private, instance and static) and // also all inherited instance methods (so public and protected methods on the base class // - you need to add FlattenHierarchy to get public and protected static methods defined // on the base class). You do not get private methods, instance or static, because they // are not inherited public IEnumerable <IMethodInfo> GetMethods() { // Get all non-private, non-static instance methods for this type, including // inherited methods var inheritedInstanceMethods = from typeMemberInstance in psiType.GetAllClassMembers() let method = typeMemberInstance.Member as IMethod where method != null && !method.IsStatic && method.GetAccessRights() != AccessRights.PRIVATE select method.AsMethodInfo(this); // Get private or static methods declared only on this type (no inheritance) var localStaticOrPublicMethods = from method in psiType.Methods where method.IsStatic || method.GetAccessRights() == AccessRights.PRIVATE select method.AsMethodInfo(this); return(inheritedInstanceMethods.Concat(localStaticOrPublicMethods)); }