diff --git a/Allure.XUnit/AllureXunitHelper.cs b/Allure.XUnit/AllureXunitHelper.cs
index 1e5fe56d..08d08343 100644
--- a/Allure.XUnit/AllureXunitHelper.cs
+++ b/Allure.XUnit/AllureXunitHelper.cs
@@ -177,7 +177,7 @@ private static void AddDistinct(this List<Label> labels, string labelName, strin
 
         private static void UpdateTestDataFromAttributes(TestResult testResult, ITestCase testCase)
         {
-            var classAttributes = testCase.TestMethod.TestClass.Class.GetCustomAttributes(typeof(IAllureInfo));
+            var classAttributes = GetCustomAttributesRecursive(testCase.TestMethod.TestClass.Class, typeof(IAllureInfo));
             var methodAttributes = testCase.TestMethod.Method.GetCustomAttributes(typeof(IAllureInfo));
 
             foreach (var attribute in classAttributes.Concat(methodAttributes))
@@ -279,5 +279,24 @@ private static string BuildFullName(ITestCase testCase)
 
             return $"{testCase.TestMethod.TestClass.Class.Name}.{testCase.TestMethod.Method.Name}{parametersSegment}";
         }
+
+        private static IEnumerable<IAttributeInfo> GetCustomAttributesRecursive(ITypeInfo typeInfo, Type attributeType)
+        {
+            foreach (var type in GetInheritanceTree(typeInfo).Reverse())
+            {
+                foreach (var attribute in type.GetCustomAttributes(attributeType.AssemblyQualifiedName))
+                    yield return attribute;
+            }
+
+            static IEnumerable<ITypeInfo> GetInheritanceTree(ITypeInfo typeInfo)
+            {
+                var currentType = typeInfo;
+                while (currentType.ToRuntimeType() != typeof(object))
+                {
+                    yield return currentType;
+                    currentType = currentType.BaseType;
+                }
+            }
+        }
     }
 }
\ No newline at end of file