diff --git a/phpstan.neon b/phpstan.neon
index 15362be0bad1f5304af25183b1cf210c96e43ace..523a2c5424c4952e2b7926115efaf0d0593105e9 100644
--- a/phpstan.neon
+++ b/phpstan.neon
@@ -14,3 +14,6 @@ parameters:
   ignoreErrors:
     - "#^Unsafe usage of new static#"
     - "#Drupal calls should be avoided in classes, use dependency injection instead#"
+    -
+      message: "#Attribute class PHPUnit\\\\Framework\\\\Attributes\\\\.* does not exist#"
+      reportUnmatched: false
diff --git a/tests/src/Functional/SophronTest.php b/tests/src/Functional/SophronTest.php
index e08e944c511e71c11caedee81ddcdbbbc06a128d..9aba85b5a6f9503f4d4753cfa59ca5b0f0bfd4bd 100644
--- a/tests/src/Functional/SophronTest.php
+++ b/tests/src/Functional/SophronTest.php
@@ -7,12 +7,14 @@ namespace Drupal\Tests\sophron\Functional;
 use Drupal\sophron\MimeMapManagerInterface;
 use Drupal\Tests\BrowserTestBase;
 use FileEye\MimeMap\MappingException;
+use PHPUnit\Framework\Attributes\Group;
 
 /**
  * Tests Sophron functionality.
  *
  * @group sophron
  */
+#[Group('sophron')]
 class SophronTest extends BrowserTestBase {
 
   /**
diff --git a/tests/src/Kernel/SophronApiTest.php b/tests/src/Kernel/SophronApiTest.php
index 3b463be0a83a3c0cacca39a213892de4e4f2cbad..82225e7d7777875c5d45ae63913ce07f70970f43 100644
--- a/tests/src/Kernel/SophronApiTest.php
+++ b/tests/src/Kernel/SophronApiTest.php
@@ -6,10 +6,13 @@ namespace Drupal\Tests\sophron\Kernel;
 
 use Drupal\KernelTests\KernelTestBase;
 use Drupal\sophron\Map\DrupalMap;
+use Drupal\sophron\MimeMapManager;
 use Drupal\sophron\MimeMapManagerInterface;
 use FileEye\MimeMap\MalformedTypeException;
 use FileEye\MimeMap\Map\DefaultMap;
 use FileEye\MimeMap\MappingException;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\Group;
 
 /**
  * Tests for Sophron API.
@@ -18,6 +21,8 @@ use FileEye\MimeMap\MappingException;
  *
  * @group sophron
  */
+#[CoversClass(MimeMapManager::class)]
+#[Group('sophron')]
 class SophronApiTest extends KernelTestBase {
 
   /**
@@ -34,10 +39,12 @@ class SophronApiTest extends KernelTestBase {
   }
 
   /**
-   * @covers ::getMapClass
-   * @covers ::setMapClass
-   * @covers ::listExtensions
-   * @covers ::getExtension
+   * Tests get Extension.
+   *
+   * @legacy-covers ::getMapClass
+   * @legacy-covers ::setMapClass
+   * @legacy-covers ::listExtensions
+   * @legacy-covers ::getExtension
    */
   public function testGetExtension(): void {
     $manager = \Drupal::service(MimeMapManagerInterface::class);
@@ -51,8 +58,10 @@ class SophronApiTest extends KernelTestBase {
   }
 
   /**
-   * @covers ::listTypes
-   * @covers ::getType
+   * Tests get Type.
+   *
+   * @legacy-covers ::listTypes
+   * @legacy-covers ::getType
    */
   public function testGetType(): void {
     $manager = \Drupal::service(MimeMapManagerInterface::class);
@@ -61,7 +70,9 @@ class SophronApiTest extends KernelTestBase {
   }
 
   /**
-   * @covers ::getType
+   * Tests get missing Type.
+   *
+   * @legacy-covers ::getType
    */
   public function testGetMissingType(): void {
     $manager = \Drupal::service(MimeMapManagerInterface::class);
@@ -71,7 +82,9 @@ class SophronApiTest extends KernelTestBase {
   }
 
   /**
-   * @covers ::getType
+   * Tests get malformed Type.
+   *
+   * @legacy-covers ::getType
    */
   public function testGetMalformedType(): void {
     $manager = \Drupal::service(MimeMapManagerInterface::class);
@@ -81,8 +94,10 @@ class SophronApiTest extends KernelTestBase {
   }
 
   /**
-   * @covers ::getMapClass
-   * @covers ::getMappingErrors
+   * Tests get mapping errors.
+   *
+   * @legacy-covers ::getMapClass
+   * @legacy-covers ::getMappingErrors
    */
   public function testGetMappingErrors(): void {
     $config = \Drupal::configFactory()->getEditable('sophron.settings');
diff --git a/tests/src/Kernel/SophronGuesserTest.php b/tests/src/Kernel/SophronGuesserTest.php
index 373bfbb0bfc1af242c237ae94ba7803b4da563a8..cfe63118c7c62f1bb82424005d2a17202664e152 100644
--- a/tests/src/Kernel/SophronGuesserTest.php
+++ b/tests/src/Kernel/SophronGuesserTest.php
@@ -5,6 +5,9 @@ declare(strict_types=1);
 namespace Drupal\Tests\sophron\Kernel;
 
 use Drupal\KernelTests\KernelTestBase;
+use Drupal\sophron_guesser\SophronMimeTypeGuesser;
+use PHPUnit\Framework\Attributes\CoversClass;
+use PHPUnit\Framework\Attributes\Group;
 
 /**
  * Tests for Sophron guesser.
@@ -13,6 +16,8 @@ use Drupal\KernelTests\KernelTestBase;
  *
  * @group sophron
  */
+#[CoversClass(SophronMimeTypeGuesser::class)]
+#[Group('sophron')]
 class SophronGuesserTest extends KernelTestBase {
 
   /**
@@ -29,7 +34,9 @@ class SophronGuesserTest extends KernelTestBase {
   }
 
   /**
-   * @covers ::guessMimeType
+   * Tests guesser not installed.
+   *
+   * @legacy-covers ::guessMimeType
    */
   public function testGuesserNotInstalled(): void {
     $guesser = \Drupal::service('file.mime_type.guesser.extension');
@@ -37,7 +44,9 @@ class SophronGuesserTest extends KernelTestBase {
   }
 
   /**
-   * @covers ::guessMimeType
+   * Tests guesser installed.
+   *
+   * @legacy-covers ::guessMimeType
    */
   public function testGuesserInstalled(): void {
     \Drupal::service('module_installer')->install(['sophron_guesser']);
@@ -46,7 +55,9 @@ class SophronGuesserTest extends KernelTestBase {
   }
 
   /**
-   * @covers ::guessMimeType
+   * Tests guesser install and uninstall.
+   *
+   * @legacy-covers ::guessMimeType
    */
   public function testGuesserInstallUninstall(): void {
     $guesser = \Drupal::service('file.mime_type.guesser.extension');