You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ja...@apache.org on 2026/01/27 00:16:42 UTC

(lucene) branch main updated: Use expectThrows for expected exceptions (#15611)

This is an automated email from the ASF dual-hosted git repository.

jainankitk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/lucene.git


The following commit(s) were added to refs/heads/main by this push:
     new 07b2acc52c7 Use expectThrows for expected exceptions (#15611)
07b2acc52c7 is described below

commit 07b2acc52c79f0454ec05398e394ec0f680c9334
Author: Zhang Chao <80...@qq.com>
AuthorDate: Tue Jan 27 08:16:36 2026 +0800

    Use expectThrows for expected exceptions (#15611)
---
 .../analysis/core/TestStopFilterFactory.java       |  1 -
 .../apache/lucene/index/TestDocValuesIndexing.java |  1 -
 .../lucene/index/TestIndexWriterExceptions.java    | 53 +++++++++-------------
 .../lucene/index/TestIndexWriterMergePolicy.java   |  7 ++-
 .../apache/lucene/util/TestAttributeSource.java    |  1 -
 .../org/apache/lucene/util/TestBytesRefHash.java   | 20 ++++----
 .../test/org/apache/lucene/util/TestSetOnce.java   |  8 ++--
 .../TestLimitedFiniteStringsIterator.java          |  1 -
 .../TestUnifiedHighlighterReanalysis.java          |  6 ++-
 .../uhighlight/TestUnifiedHighlighterTermVec.java  | 35 +++++++-------
 .../luke/models/analysis/TestAnalysisImpl.java     |  4 +-
 .../luke/models/documents/TestDocumentsImpl.java   |  4 +-
 .../luke/models/overview/TestOverviewImpl.java     |  8 ++--
 .../lucene/luke/models/search/TestSearchImpl.java  | 17 ++++---
 .../lucene/queries/spans/TestSpanWithinQuery.java  |  8 +++-
 .../spatial/vector/TestPointVectorStrategy.java    |  4 +-
 16 files changed, 82 insertions(+), 96 deletions(-)

diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/core/TestStopFilterFactory.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/core/TestStopFilterFactory.java
index 0946a922439..4f0f5a196a5 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/core/TestStopFilterFactory.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/core/TestStopFilterFactory.java
@@ -96,7 +96,6 @@ public class TestStopFilterFactory extends BaseTokenStreamFactoryTestCase {
                   // implicit default words file
                   "format",
                   "bogus");
-              fail();
             });
     msg = expected.getMessage();
     assertTrue(msg, msg.contains("can not be specified"));
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestDocValuesIndexing.java b/lucene/core/src/test/org/apache/lucene/index/TestDocValuesIndexing.java
index 169278e5374..ed9c764103f 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestDocValuesIndexing.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestDocValuesIndexing.java
@@ -102,7 +102,6 @@ public class TestDocValuesIndexing extends LuceneTestCase {
         IllegalArgumentException.class,
         () -> {
           w.addDocument(doc);
-          fail("didn't hit expected exception");
         });
 
     DirectoryReader r = w.getReader();
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterExceptions.java b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterExceptions.java
index 4fc4e5473b4..469d8f91588 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterExceptions.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterExceptions.java
@@ -661,14 +661,12 @@ public class TestIndexWriterExceptions extends LuceneTestCase {
       writer.addDocument(doc);
       doc.add(newField("crash", "this should crash after 4 terms", DocCopyIterator.custom5));
       doc.add(newField("other", "this will not get indexed", DocCopyIterator.custom5));
-      try {
-        writer.addDocument(doc);
-        fail("did not hit expected exception");
-      } catch (IOException ioe) {
-        if (VERBOSE) {
-          System.out.println("TEST: hit expected exception");
-          ioe.printStackTrace(System.out);
-        }
+      IndexWriter finalWriter = writer;
+      Document finalDoc = doc;
+      IOException ioe = expectThrows(IOException.class, () -> finalWriter.addDocument(finalDoc));
+      if (VERBOSE) {
+        System.out.println("TEST: hit expected exception");
+        ioe.printStackTrace(System.out);
       }
 
       if (0 == i) {
@@ -958,11 +956,7 @@ public class TestIndexWriterExceptions extends LuceneTestCase {
     for (int i = 0; i < 23; i++) {
       addDoc(writer);
       if ((i - 1) % 2 == 0) {
-        try {
-          writer.commit();
-        } catch (IOException _) {
-          // expected
-        }
+        expectThrows(IOException.class, () -> writer.commit());
       }
     }
     ((ConcurrentMergeScheduler) writer.getConfig().getMergeScheduler()).sync();
@@ -1720,7 +1714,6 @@ public class TestIndexWriterExceptions extends LuceneTestCase {
           Field theField = new StoredField("foo", v);
           doc.add(theField);
           iw.addDocument(doc);
-          fail("didn't get expected exception");
         });
 
     assertNull(iw.getTragicException());
@@ -1749,7 +1742,6 @@ public class TestIndexWriterExceptions extends LuceneTestCase {
           BytesRef v = null;
           theField.setBytesValue(v);
           iw.addDocument(doc);
-          fail("didn't get expected exception");
         });
 
     assertNull(iw.getTragicException());
@@ -1778,7 +1770,6 @@ public class TestIndexWriterExceptions extends LuceneTestCase {
           Field theField = new StoredField("foo", v);
           doc.add(theField);
           iw.addDocument(doc);
-          fail("didn't get expected exception");
         });
 
     assertNull(iw.getTragicException());
@@ -2231,16 +2222,14 @@ public class TestIndexWriterExceptions extends LuceneTestCase {
               return true;
             }
           }) {
-        writer.rollback();
-        fail();
+        RuntimeException e = expectThrows(RuntimeException.class, () -> writer.rollback());
+        assertEquals("boom", e.getMessage());
+        assertEquals(
+            "has suppressed exceptions: " + Arrays.toString(e.getSuppressed()),
+            0,
+            e.getSuppressed().length);
+        assertNull(e.getCause());
       }
-    } catch (RuntimeException e) {
-      assertEquals("boom", e.getMessage());
-      assertEquals(
-          "has suppressed exceptions: " + Arrays.toString(e.getSuppressed()),
-          0,
-          e.getSuppressed().length);
-      assertNull(e.getCause());
     }
   }
 
@@ -2292,12 +2281,14 @@ public class TestIndexWriterExceptions extends LuceneTestCase {
         doc.add(new IntPoint("point2d", random().nextInt(), random().nextInt()));
         writer.addDocument(new Document());
       }
-      try {
-        writer.commit();
-        fail();
-      } catch (RuntimeException e) {
-        assertEquals("boom", e.getMessage());
-      }
+      RuntimeException expected =
+          expectThrows(
+              RuntimeException.class,
+              () -> {
+                writer.commit();
+              });
+      assertEquals("boom", expected.getMessage());
+
       try {
         maybeFailDelete.set(true);
         writer.rollback();
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterMergePolicy.java b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterMergePolicy.java
index 2efc0a750a6..5b2d217c77d 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterMergePolicy.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterMergePolicy.java
@@ -697,10 +697,9 @@ public class TestIndexWriterMergePolicy extends LuceneTestCase {
         writer.addDocument(d2);
         writer.flush();
         mergeAndFail.set(true);
-        try (DirectoryReader reader = DirectoryReader.open(writer)) {
-          assertNotNull(reader); // make compiler happy and use the reader
-          fail();
-        } catch (RuntimeException e) {
+        try {
+          RuntimeException e =
+              expectThrows(RuntimeException.class, () -> DirectoryReader.open(writer));
           assertEquals("boom", e.getMessage());
         } finally {
           mergeAndFail.set(false);
diff --git a/lucene/core/src/test/org/apache/lucene/util/TestAttributeSource.java b/lucene/core/src/test/org/apache/lucene/util/TestAttributeSource.java
index cf7a244a784..21ea2e7a3de 100644
--- a/lucene/core/src/test/org/apache/lucene/util/TestAttributeSource.java
+++ b/lucene/core/src/test/org/apache/lucene/util/TestAttributeSource.java
@@ -165,7 +165,6 @@ public class TestAttributeSource extends LuceneTestCase {
         () -> {
           AttributeSource src = new AttributeSource();
           src.addAttribute(Token.class);
-          fail("Should throw IllegalArgumentException");
         });
 
     expectThrows(
diff --git a/lucene/core/src/test/org/apache/lucene/util/TestBytesRefHash.java b/lucene/core/src/test/org/apache/lucene/util/TestBytesRefHash.java
index c73b1182505..9d2fd94ebe0 100644
--- a/lucene/core/src/test/org/apache/lucene/util/TestBytesRefHash.java
+++ b/lucene/core/src/test/org/apache/lucene/util/TestBytesRefHash.java
@@ -332,26 +332,22 @@ public class TestBytesRefHash extends LuceneTestCase {
     }
   }
 
-  @Test(expected = MaxBytesLengthExceededException.class)
+  @Test
   public void testLargeValue() {
     int[] sizes =
-        new int[] {
-          random().nextInt(5),
-          ByteBlockPool.BYTE_BLOCK_SIZE - 33 + random().nextInt(31),
-          ByteBlockPool.BYTE_BLOCK_SIZE - 1 + random().nextInt(37)
-        };
+        new int[] {random().nextInt(5), ByteBlockPool.BYTE_BLOCK_SIZE - 33 + random().nextInt(31)};
     BytesRef ref = new BytesRef();
     for (int i = 0; i < sizes.length; i++) {
       ref.bytes = new byte[sizes[i]];
       ref.offset = 0;
       ref.length = sizes[i];
-      try {
-        assertEquals(i, hash.add(ref));
-      } catch (MaxBytesLengthExceededException e) {
-        if (i < sizes.length - 1) fail("unexpected exception at size: " + sizes[i]);
-        throw e;
-      }
+      assertEquals(i, hash.add(ref));
     }
+
+    ref.bytes = new byte[ByteBlockPool.BYTE_BLOCK_SIZE - 1 + random().nextInt(37)];
+    ref.offset = 0;
+    ref.length = ref.bytes.length;
+    expectThrows(MaxBytesLengthExceededException.class, () -> hash.add(ref));
   }
 
   /** Test method for {@link org.apache.lucene.util.BytesRefHash#addByPoolOffset(int)} . */
diff --git a/lucene/core/src/test/org/apache/lucene/util/TestSetOnce.java b/lucene/core/src/test/org/apache/lucene/util/TestSetOnce.java
index 513ec65c811..eb25186b3bf 100644
--- a/lucene/core/src/test/org/apache/lucene/util/TestSetOnce.java
+++ b/lucene/core/src/test/org/apache/lucene/util/TestSetOnce.java
@@ -55,19 +55,19 @@ public class TestSetOnce extends LuceneTestCase {
     assertNull(set.get());
   }
 
-  @Test(expected = AlreadySetException.class)
+  @Test
   public void testSettingCtor() throws Exception {
     SetOnce<Integer> set = new SetOnce<>(5);
     assertEquals(5, set.get().intValue());
-    set.set(7);
+    expectThrows(AlreadySetException.class, () -> set.set(7));
   }
 
-  @Test(expected = AlreadySetException.class)
+  @Test
   public void testSetOnce() throws Exception {
     SetOnce<Integer> set = new SetOnce<>();
     set.set(5);
     assertEquals(5, set.get().intValue());
-    set.set(7);
+    expectThrows(AlreadySetException.class, () -> set.set(7));
   }
 
   @Test
diff --git a/lucene/core/src/test/org/apache/lucene/util/automaton/TestLimitedFiniteStringsIterator.java b/lucene/core/src/test/org/apache/lucene/util/automaton/TestLimitedFiniteStringsIterator.java
index c28bfaf005e..66bbdf33bd4 100644
--- a/lucene/core/src/test/org/apache/lucene/util/automaton/TestLimitedFiniteStringsIterator.java
+++ b/lucene/core/src/test/org/apache/lucene/util/automaton/TestLimitedFiniteStringsIterator.java
@@ -53,7 +53,6 @@ public class TestLimitedFiniteStringsIterator extends LuceneTestCase {
         IllegalArgumentException.class,
         () -> {
           new LimitedFiniteStringsIterator(a, -7);
-          fail("did not hit exception");
         });
   }
 
diff --git a/lucene/highlighter/src/test/org/apache/lucene/search/uhighlight/TestUnifiedHighlighterReanalysis.java b/lucene/highlighter/src/test/org/apache/lucene/search/uhighlight/TestUnifiedHighlighterReanalysis.java
index f31a4c1b149..0ad299eb4cc 100644
--- a/lucene/highlighter/src/test/org/apache/lucene/search/uhighlight/TestUnifiedHighlighterReanalysis.java
+++ b/lucene/highlighter/src/test/org/apache/lucene/search/uhighlight/TestUnifiedHighlighterReanalysis.java
@@ -55,7 +55,7 @@ public class TestUnifiedHighlighterReanalysis extends UnifiedHighlighterTestBase
     assertEquals("Hello", highlighter.highlightWithoutSearcher("nonexistent", query, "Hello", 1));
   }
 
-  @Test(expected = IllegalStateException.class)
+  @Test
   public void testIndexSearcherNullness() throws IOException {
     String text =
         "This is a test. Just a test highlighting without a searcher. Feel free to ignore.";
@@ -66,7 +66,9 @@ public class TestUnifiedHighlighterReanalysis extends UnifiedHighlighterTestBase
         IndexReader indexReader = indexWriter.getReader()) {
       IndexSearcher searcher = newSearcher(indexReader);
       UnifiedHighlighter highlighter = UnifiedHighlighter.builder(searcher, indexAnalyzer).build();
-      highlighter.highlightWithoutSearcher("body", query, text, 1); // should throw
+      expectThrows(
+          IllegalStateException.class,
+          () -> highlighter.highlightWithoutSearcher("body", query, text, 1));
     }
   }
 }
diff --git a/lucene/highlighter/src/test/org/apache/lucene/search/uhighlight/TestUnifiedHighlighterTermVec.java b/lucene/highlighter/src/test/org/apache/lucene/search/uhighlight/TestUnifiedHighlighterTermVec.java
index edb96e5c6ba..8c342a212a8 100644
--- a/lucene/highlighter/src/test/org/apache/lucene/search/uhighlight/TestUnifiedHighlighterTermVec.java
+++ b/lucene/highlighter/src/test/org/apache/lucene/search/uhighlight/TestUnifiedHighlighterTermVec.java
@@ -205,7 +205,7 @@ public class TestUnifiedHighlighterTermVec extends UnifiedHighlighterTestBase {
     }
   }
 
-  @Test(expected = IllegalArgumentException.class)
+  @Test
   public void testUserFailedToIndexOffsets() throws IOException {
     FieldType fieldType = new FieldType(tvType); // note: it's indexed too
     fieldType.setStoreTermVectorPositions(random().nextBoolean());
@@ -216,24 +216,23 @@ public class TestUnifiedHighlighterTermVec extends UnifiedHighlighterTestBase {
     doc.add(new Field("body", "term vectors", fieldType));
     iw.addDocument(doc);
 
-    IndexReader ir = iw.getReader();
-    iw.close();
+    try (IndexReader ir = iw.getReader()) {
+      iw.close();
 
-    IndexSearcher searcher = newSearcher(ir);
-    UnifiedHighlighter.Builder uhBuilder = new UnifiedHighlighter.Builder(searcher, indexAnalyzer);
-    UnifiedHighlighter highlighter =
-        new UnifiedHighlighter(uhBuilder) {
-          @Override
-          protected Set<HighlightFlag> getFlags(String field) {
-            return Collections.emptySet(); // no WEIGHT_MATCHES
-          }
-        };
-    TermQuery query = new TermQuery(new Term("body", "vectors"));
-    TopDocs topDocs = searcher.search(query, 10, Sort.INDEXORDER);
-    try {
-      highlighter.highlight("body", query, topDocs, 1); // should throw
-    } finally {
-      ir.close();
+      IndexSearcher searcher = newSearcher(ir);
+      UnifiedHighlighter.Builder uhBuilder =
+          new UnifiedHighlighter.Builder(searcher, indexAnalyzer);
+      UnifiedHighlighter highlighter =
+          new UnifiedHighlighter(uhBuilder) {
+            @Override
+            protected Set<HighlightFlag> getFlags(String field) {
+              return Collections.emptySet(); // no WEIGHT_MATCHES
+            }
+          };
+      TermQuery query = new TermQuery(new Term("body", "vectors"));
+      TopDocs topDocs = searcher.search(query, 10, Sort.INDEXORDER);
+      expectThrows(
+          IllegalArgumentException.class, () -> highlighter.highlight("body", query, topDocs, 1));
     }
   }
 }
diff --git a/lucene/luke/src/test/org/apache/lucene/luke/models/analysis/TestAnalysisImpl.java b/lucene/luke/src/test/org/apache/lucene/luke/models/analysis/TestAnalysisImpl.java
index 99d1f057358..cdf0f9213a8 100644
--- a/lucene/luke/src/test/org/apache/lucene/luke/models/analysis/TestAnalysisImpl.java
+++ b/lucene/luke/src/test/org/apache/lucene/luke/models/analysis/TestAnalysisImpl.java
@@ -132,7 +132,7 @@ public class TestAnalysisImpl extends LuceneTestCase {
     assertNotNull(tokens);
   }
 
-  @Test(expected = LukeException.class)
+  @Test
   public void testAnalyzeStepByStep_preset() {
     AnalysisImpl analysis = new AnalysisImpl();
     String analyzerType = "org.apache.lucene.analysis.standard.StandardAnalyzer";
@@ -140,7 +140,7 @@ public class TestAnalysisImpl extends LuceneTestCase {
     assertEquals(analyzerType, analyzer.getClass().getName());
 
     String text = "This test must fail.";
-    analysis.analyzeStepByStep(text);
+    expectThrows(LukeException.class, () -> analysis.analyzeStepByStep(text));
   }
 
   @Test
diff --git a/lucene/luke/src/test/org/apache/lucene/luke/models/documents/TestDocumentsImpl.java b/lucene/luke/src/test/org/apache/lucene/luke/models/documents/TestDocumentsImpl.java
index b230778331e..d9c5bca2cc7 100644
--- a/lucene/luke/src/test/org/apache/lucene/luke/models/documents/TestDocumentsImpl.java
+++ b/lucene/luke/src/test/org/apache/lucene/luke/models/documents/TestDocumentsImpl.java
@@ -243,10 +243,10 @@ public class TestDocumentsImpl extends DocumentsTestBase {
     assertEquals(0, documents.getTermPositions().size());
   }
 
-  @Test(expected = AlreadyClosedException.class)
+  @Test
   public void testClose() throws Exception {
     new DocumentsImpl(reader);
     reader.close();
-    IndexUtils.getFieldNames(reader);
+    expectThrows(AlreadyClosedException.class, () -> IndexUtils.getFieldNames(reader));
   }
 }
diff --git a/lucene/luke/src/test/org/apache/lucene/luke/models/overview/TestOverviewImpl.java b/lucene/luke/src/test/org/apache/lucene/luke/models/overview/TestOverviewImpl.java
index 04707358518..bab9acef197 100644
--- a/lucene/luke/src/test/org/apache/lucene/luke/models/overview/TestOverviewImpl.java
+++ b/lucene/luke/src/test/org/apache/lucene/luke/models/overview/TestOverviewImpl.java
@@ -121,16 +121,16 @@ public class TestOverviewImpl extends OverviewTestBase {
     assertEquals("f2", result.get(0).getField());
   }
 
-  @Test(expected = IllegalArgumentException.class)
+  @Test
   public void testGetTopTerms_illegal_numterms() {
     OverviewImpl overview = new OverviewImpl(reader, indexDir.toString());
-    overview.getTopTerms("f2", -1);
+    expectThrows(IllegalArgumentException.class, () -> overview.getTopTerms("f2", -1));
   }
 
-  @Test(expected = AlreadyClosedException.class)
+  @Test
   public void testClose() throws Exception {
     OverviewImpl overview = new OverviewImpl(reader, indexDir.toString());
     reader.close();
-    overview.getNumFields();
+    expectThrows(AlreadyClosedException.class, () -> overview.getNumFields());
   }
 }
diff --git a/lucene/luke/src/test/org/apache/lucene/luke/models/search/TestSearchImpl.java b/lucene/luke/src/test/org/apache/lucene/luke/models/search/TestSearchImpl.java
index 6a3e4dc2c22..a2ba76b2c1a 100644
--- a/lucene/luke/src/test/org/apache/lucene/luke/models/search/TestSearchImpl.java
+++ b/lucene/luke/src/test/org/apache/lucene/luke/models/search/TestSearchImpl.java
@@ -254,10 +254,10 @@ public class TestSearchImpl extends LuceneTestCase {
         search.guessSortTypes("f7").toArray());
   }
 
-  @Test(expected = LukeException.class)
+  @Test
   public void testGuessSortTypesNoSuchField() {
     SearchImpl search = new SearchImpl(reader);
-    search.guessSortTypes("unknown");
+    expectThrows(LukeException.class, () -> search.guessSortTypes("unknown"));
   }
 
   @Test
@@ -295,11 +295,10 @@ public class TestSearchImpl extends LuceneTestCase {
     assertFalse(search.getSortType("f7", "STRING", false).isPresent());
   }
 
-  @Test(expected = LukeException.class)
+  @Test
   public void testGetSortTypeNoSuchField() {
     SearchImpl search = new SearchImpl(reader);
-
-    search.getSortType("unknown", "STRING", false);
+    expectThrows(LukeException.class, () -> search.getSortType("unknown", "STRING", false));
   }
 
   @Test
@@ -341,10 +340,10 @@ public class TestSearchImpl extends LuceneTestCase {
     assertEquals(10, res.getOffset());
   }
 
-  @Test(expected = LukeException.class)
+  @Test
   public void testNextPageSearchNotStarted() {
     SearchImpl search = new SearchImpl(reader);
-    search.nextPage();
+    expectThrows(LukeException.class, () -> search.nextPage());
   }
 
   @Test
@@ -371,10 +370,10 @@ public class TestSearchImpl extends LuceneTestCase {
     assertEquals(0, res.getOffset());
   }
 
-  @Test(expected = LukeException.class)
+  @Test
   public void testPrevPageSearchNotStarted() {
     SearchImpl search = new SearchImpl(reader);
-    search.prevPage();
+    expectThrows(LukeException.class, () -> search.prevPage());
   }
 
   @Test
diff --git a/lucene/queries/src/test/org/apache/lucene/queries/spans/TestSpanWithinQuery.java b/lucene/queries/src/test/org/apache/lucene/queries/spans/TestSpanWithinQuery.java
index 5a8164930fc..026081e0223 100644
--- a/lucene/queries/src/test/org/apache/lucene/queries/spans/TestSpanWithinQuery.java
+++ b/lucene/queries/src/test/org/apache/lucene/queries/spans/TestSpanWithinQuery.java
@@ -118,12 +118,16 @@ public class TestSpanWithinQuery extends LuceneTestCase {
     check(query, expectedDocs);
   }
 
-  @Test(expected = IllegalArgumentException.class)
+  @Test
   public void testDifferentFieldsThrowsIllegalArgumentException() {
     SpanQuery big = new SpanTermQuery(new Term("field1", "one"));
     SpanQuery little = new SpanTermQuery(new Term("field2", "two"));
 
-    new SpanWithinQuery(big, little);
+    expectThrows(
+        IllegalArgumentException.class,
+        () -> {
+          new SpanWithinQuery(big, little);
+        });
   }
 
   public void testToString() {
diff --git a/lucene/spatial-extras/src/test/org/apache/lucene/spatial/vector/TestPointVectorStrategy.java b/lucene/spatial-extras/src/test/org/apache/lucene/spatial/vector/TestPointVectorStrategy.java
index e6ddd2a3adc..0e6ef3f16f2 100644
--- a/lucene/spatial-extras/src/test/org/apache/lucene/spatial/vector/TestPointVectorStrategy.java
+++ b/lucene/spatial-extras/src/test/org/apache/lucene/spatial/vector/TestPointVectorStrategy.java
@@ -51,12 +51,12 @@ public class TestPointVectorStrategy extends StrategyTestCase {
     assertNotNull(query);
   }
 
-  @Test(expected = UnsupportedOperationException.class)
+  @Test
   public void testInvalidQueryShape() {
     this.strategy = PointVectorStrategy.newInstance(ctx, getClass().getSimpleName());
     Point point = ctx.makePoint(0, 0);
     SpatialArgs args = new SpatialArgs(SpatialOperation.Intersects, point);
-    this.strategy.makeQuery(args);
+    expectThrows(UnsupportedOperationException.class, () -> this.strategy.makeQuery(args));
   }
 
   @Test