diff --git a/meta/lib/oeqa/core/tests/cases/results.py b/meta/lib/oeqa/core/tests/cases/results.py
new file mode 100644
index 00000000000..363f3cd85fb
--- /dev/null
+++ b/meta/lib/oeqa/core/tests/cases/results.py
@@ -0,0 +1,49 @@
+#
+# Copyright OpenEmbedded Contributors
+#
+# SPDX-License-Identifier: MIT
+#
+
+import unittest
+
+from oeqa.core.case import OETestCase
+
+class ResultsTest(OETestCase):
+
+    def testPass(self):
+        pass
+
+    def testFail(self):
+        self.fail("Failed on purpose")
+
+    def testError(self):
+        raise Exception("Error on purpose")
+
+    def testSkip(self):
+        self.skipTest("Skipped on purpose")
+
+    @unittest.expectedFailure
+    def testExpectedFailure(self):
+        self.fail("Failed on purpose")
+
+    @unittest.expectedFailure
+    def testUnexpectedSuccess(self):
+        pass
+
+class ResultsClassErrorTest(OETestCase):
+
+    @classmethod
+    def setUpClass(cls):
+        raise Exception("Error on purpose")
+
+    def testClassError(self):
+        pass
+
+class ResultsClassSkipTest(OETestCase):
+
+    @classmethod
+    def setUpClass(cls):
+        raise unittest.SkipTest("Skipped on purpose")
+
+    def testClassSkip(self):
+        pass
diff --git a/meta/lib/oeqa/core/tests/cases/resultsmodule.py b/meta/lib/oeqa/core/tests/cases/resultsmodule.py
new file mode 100644
index 00000000000..7579e86b934
--- /dev/null
+++ b/meta/lib/oeqa/core/tests/cases/resultsmodule.py
@@ -0,0 +1,15 @@
+#
+# Copyright OpenEmbedded Contributors
+#
+# SPDX-License-Identifier: MIT
+#
+
+from oeqa.core.case import OETestCase
+
+def setUpModule():
+    raise Exception("Error on purpose")
+
+class ResultsModuleTest(OETestCase):
+
+    def testModuleError(self):
+        pass
diff --git a/meta/lib/oeqa/core/tests/test_runner.py b/meta/lib/oeqa/core/tests/test_runner.py
index ce7be7b14e3..a9aac5ddf66 100755
--- a/meta/lib/oeqa/core/tests/test_runner.py
+++ b/meta/lib/oeqa/core/tests/test_runner.py
@@ -43,6 +43,19 @@ class TestResultStatus(TestBase):
         return {case_id: result._getTestResultDetails(case)[0]
                 for case_id, case in tc._registry['cases'].items()}
 
+    def test_result_status(self):
+        self.assertEqual(self._statuses(['results', 'resultsmodule']), {
+            'results.ResultsTest.testPass': 'PASSED',
+            'results.ResultsTest.testFail': 'FAILED',
+            'results.ResultsTest.testError': 'ERROR',
+            'results.ResultsTest.testSkip': 'SKIPPED',
+            'results.ResultsTest.testExpectedFailure': 'EXPECTEDFAIL',
+            'results.ResultsTest.testUnexpectedSuccess': 'PASSED',
+            'results.ResultsClassErrorTest.testClassError': 'ERROR',
+            'results.ResultsClassSkipTest.testClassSkip': 'SKIPPED',
+            'resultsmodule.ResultsModuleTest.testModuleError': 'ERROR',
+        })
+
     def test_subtest_status(self):
         self.assertEqual(self._statuses(['subtest']), {
             'subtest.SubTestTest.testSubTestFail': 'FAILED',
