diff --git a/package_manager/src/ValidationResult.php b/package_manager/src/ValidationResult.php
index ddfa728715c5718705d72232937808799a6761d4..f5c9b51c023b7eef24dc2e2ec2839ac035339b8c 100644
--- a/package_manager/src/ValidationResult.php
+++ b/package_manager/src/ValidationResult.php
@@ -43,6 +43,9 @@ final class ValidationResult {
    *   The errors summary.
    */
   private function __construct(int $severity, array $messages, ?TranslatableMarkup $summary = NULL) {
+    if (empty($messages)) {
+      throw new \InvalidArgumentException('At least one message is required.');
+    }
     if (count($messages) > 1 && !$summary) {
       throw new \InvalidArgumentException('If more than one message is provided, a summary is required.');
     }
diff --git a/package_manager/tests/src/Unit/ValidationResultTest.php b/package_manager/tests/src/Unit/ValidationResultTest.php
index ad994450bfdb45e54ea4662e16e7419778b31bf5..67f08161fb7810beb89a1bbe669bed426a96513d 100644
--- a/package_manager/tests/src/Unit/ValidationResultTest.php
+++ b/package_manager/tests/src/Unit/ValidationResultTest.php
@@ -38,20 +38,53 @@ class ValidationResultTest extends UnitTestCase {
 
   /**
    * @covers ::createWarning
+   *
+   * @param string[] $messages
+   *   The warning messages of the validation result.
+   * @param string $expected_exception_message
+   *   The expected exception message.
+   *
+   * @dataProvider providerCreateExceptions
    */
-  public function testCreateWarningResultException(): void {
+  public function testCreateWarningResultException(array $messages, string $expected_exception_message): void {
     $this->expectException(\InvalidArgumentException::class);
-    $this->expectExceptionMessage('If more than one message is provided, a summary is required.');
-    ValidationResult::createWarning(['Something is wrong', 'Something else is also wrong'], NULL);
+    $this->expectExceptionMessage($expected_exception_message);
+    ValidationResult::createWarning($messages, NULL);
   }
 
   /**
    * @covers ::createError
+   *
+   * @param string[] $messages
+   *   The error messages of the validation result.
+   * @param string $expected_exception_message
+   *   The expected exception message.
+   *
+   * @dataProvider providerCreateExceptions
    */
-  public function testCreateErrorResultException(): void {
+  public function testCreateErrorResultException(array $messages, string $expected_exception_message): void {
     $this->expectException(\InvalidArgumentException::class);
-    $this->expectExceptionMessage('If more than one message is provided, a summary is required.');
-    ValidationResult::createError(['Something is wrong', 'Something else is also wrong'], NULL);
+    $this->expectExceptionMessage($expected_exception_message);
+    ValidationResult::createError($messages, NULL);
+  }
+
+  /**
+   * Data provider for test methods that test create exceptions.
+   *
+   * @return array[]
+   *   The test cases.
+   */
+  public function providerCreateExceptions(): array {
+    return [
+      '2 messages, no summary' => [
+        ['Something is wrong', 'Something else is also wrong'],
+        'If more than one message is provided, a summary is required.',
+      ],
+      'no messages' => [
+        [],
+        'At least one message is required.',
+      ],
+    ];
   }
 
   /**