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

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


The following commit(s) were added to refs/heads/main by this push:
     new cc3fa4fc46 GH-3330: Use JUnit5 in jena-db
cc3fa4fc46 is described below

commit cc3fa4fc4659d7901841ef4f545afaf407b39bf0
Author: Andy Seaborne <[email protected]>
AuthorDate: Mon Jul 21 10:05:03 2025 +0100

    GH-3330: Use JUnit5 in jena-db
---
 .../jena/dboe/base/file/BlockAccessMapped.java     |  2 +-
 .../test/java/org/apache/jena/dboe/TC_DBOE_IO.java | 17 +++--
 .../jena/dboe/base/block/AbstractTestBlockMgr.java | 22 +++---
 .../org/apache/jena/dboe/base/block/TS_Block.java  |  8 +-
 .../jena/dboe/base/block/TestBlockMgrDirect.java   |  9 ++-
 .../jena/dboe/base/block/TestBlockMgrMapped.java   | 13 ++--
 .../jena/dboe/base/block/TestBlockMgrTracked.java  | 32 ++++----
 .../apache/jena/dboe/base/buffer/TS_Buffer.java    |  8 +-
 .../jena/dboe/base/buffer/TestPtrBuffer.java       | 33 ++++----
 .../jena/dboe/base/buffer/TestRecordBuffer.java    | 35 +++++----
 .../dboe/base/file/AbstractTestBinaryDataFile.java | 18 +++--
 .../file/AbstractTestBlockAccessFixedSize.java     | 24 ++----
 .../base/file/AbstractTestBlockAccessVarSize.java  |  9 +--
 .../jena/dboe/base/file/AbstractTestChannel.java   | 14 ++--
 .../org/apache/jena/dboe/base/file/TS_File.java    |  8 +-
 .../dboe/base/file/TestBinaryDataRAFInitial.java   | 19 +++--
 .../jena/dboe/base/file/TestBlockAccessDirect.java |  5 +-
 .../jena/dboe/base/file/TestBlockAccessMapped.java |  5 +-
 .../jena/dboe/base/file/TestChannelFile.java       |  5 +-
 .../apache/jena/dboe/base/file/TestMetaFile.java   | 18 ++---
 .../jena/dboe/base/file/TestProcessFileLock.java   | 48 ++++++------
 .../dboe/base/file/TestSegmentedMemBuffer.java     | 10 +--
 .../apache/jena/dboe/base/record/TS_Record.java    |  8 +-
 .../apache/jena/dboe/base/record/TestRecord.java   |  6 +-
 .../jena/dboe/base/recordfile/TS_RecordFile.java   |  8 +-
 .../dboe/base/recordfile/TestRecordBufferPage.java | 12 +--
 jena-db/jena-dboe-index-test/pom.xml               |  6 --
 .../org/apache/jena/dboe/index/test/TS_Index.java  |  8 +-
 .../jena/dboe/index/testlib/AbstractTestIndex.java | 17 ++---
 .../dboe/index/testlib/AbstractTestRangeIndex.java |  7 +-
 .../jena/dboe/index/testlib/IndexTestLib.java      | 14 ++--
 .../org/apache/jena/dboe/storage/TC_StoreBase.java |  8 +-
 .../AbstractTestDatasetPrefixesStorage.java        |  7 +-
 .../jena/dboe/storage/prefixes/TS_Prefixes.java    |  8 +-
 .../dboe/storage/storage/BaseTestStorageRDF.java   | 27 +++----
 .../jena/dboe/storage/storage/TS_Storage.java      | 10 +--
 .../org/apache/jena/dboe/trans/TC_TransData.java   |  8 +-
 .../jena/dboe/trans/bplustree/TS_TxnBPTree.java    |  9 +--
 .../trans/bplustree/TestBPTreeDistinctKeys.java    | 58 +++++++-------
 .../jena/dboe/trans/bplustree/TestBPTreeModes.java | 52 ++++++-------
 .../trans/bplustree/TestBPTreeRecordsNonTxn.java   | 22 +++---
 .../trans/bplustree/TestBPlusTreeIndexNonTxn.java  |  9 ++-
 .../dboe/trans/bplustree/TestBPlusTreeNonTxn.java  |  9 ++-
 .../dboe/trans/bplustree/TestBPlusTreeTxn.java     | 36 ++++-----
 .../rewriter/TestBPlusTreeRewriterNonTxn.java      | 10 +--
 .../jena/dboe/trans/data/TS_TransactionalData.java |  9 +--
 .../dboe/trans/data/TestTxnBinaryDataFile.java     | 13 ++--
 .../apache/jena/dboe/trans/data/TestTxnBlob.java   | 10 +--
 .../dboe/trans/data/TestTxnBlobPersistent.java     | 20 ++---
 .../jena/dboe/trans/recovery/TestRecovery.java     | 24 +++---
 .../jena/dboe/transaction/AbstractTestTxn.java     | 11 +--
 .../jena/dboe/transaction/TS_Transactions.java     |  9 +--
 .../apache/jena/dboe/transaction/TestJournal.java  | 10 +--
 .../jena/dboe/transaction/TestStateMgrData.java    |  6 +-
 .../transaction/TestThreadingTransactions.java     | 14 ++--
 .../transaction/TestTransactionCoordinator.java    |  5 +-
 .../TestTransactionCoordinatorControl.java         | 79 ++++++++++---------
 .../dboe/transaction/TestTransactionLifecycle.java | 29 ++++---
 .../transaction/TestTransactionLifecycle2.java     | 21 ++---
 .../apache/jena/dboe/transaction/TestTxnId.java    | 11 +--
 .../apache/jena/dboe/transaction/TestTxnLib.java   | 89 +++++++++++-----------
 .../apache/jena/dboe/transaction/TestTxnLib2.java  | 18 ++---
 .../jena/dboe/transaction/TestTxnSwitching.java    | 29 +++----
 jena-db/pom.xml                                    |  6 --
 64 files changed, 588 insertions(+), 546 deletions(-)

diff --git 
a/jena-db/jena-dboe-base/src/main/java/org/apache/jena/dboe/base/file/BlockAccessMapped.java
 
b/jena-db/jena-dboe-base/src/main/java/org/apache/jena/dboe/base/file/BlockAccessMapped.java
index dad5434e43..ca0c92e356 100644
--- 
a/jena-db/jena-dboe-base/src/main/java/org/apache/jena/dboe/base/file/BlockAccessMapped.java
+++ 
b/jena-db/jena-dboe-base/src/main/java/org/apache/jena/dboe/base/file/BlockAccessMapped.java
@@ -75,7 +75,7 @@ public class BlockAccessMapped extends BlockAccessBase
     @Override
     public Block allocate(int blkSize) {
         if ( blkSize > 0 && blkSize != this.blockSize )
-            throw new FileException("Fixed blocksize only: request= 
"+blkSize+"fixed size="+this.blockSize);
+            throw new FileException("Fixed blocksize only: request= 
"+blkSize+" fixed size="+this.blockSize);
         int id = allocateId();
         ByteBuffer bb = getByteBuffer(id);
         bb.position(0);
diff --git 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/TC_DBOE_IO.java 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/TC_DBOE_IO.java
index 0d59c06c4f..8de8d7bc86 100644
--- a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/TC_DBOE_IO.java
+++ b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/TC_DBOE_IO.java
@@ -18,6 +18,11 @@
 
 package org.apache.jena.dboe;
 
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.platform.suite.api.SelectClasses;
+import org.junit.platform.suite.api.Suite;
+
 import org.apache.jena.atlas.logging.LogCtl;
 import org.apache.jena.dboe.base.block.FileMode;
 import org.apache.jena.dboe.base.block.TS_Block;
@@ -26,13 +31,9 @@ import org.apache.jena.dboe.base.file.TS_File;
 import org.apache.jena.dboe.base.record.TS_Record;
 import org.apache.jena.dboe.base.recordfile.TS_RecordFile;
 import org.apache.jena.dboe.sys.SystemIndex;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
 
-@RunWith(Suite.class)
[email protected]( {
+@Suite
+@SelectClasses({
     TS_Block.class
     , TS_File.class
     , TS_Buffer.class
@@ -48,12 +49,12 @@ public class TC_DBOE_IO {
             SystemIndex.setFileMode(FileMode.direct);
     }
 
-    @BeforeClass static public void beforeClass() {
+    @BeforeAll static public void beforeClass() {
         level = LogCtl.getLevel("org.apache.jena.tdb.info");
         LogCtl.setLevel("org.apache.jena.tdb.info", "WARN");
     }
 
-    @AfterClass static public void afterClass() {
+    @AfterAll static public void afterClass() {
         LogCtl.setLevel("org.apache.jena.tdb.info", level);
     }
 }
diff --git 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/block/AbstractTestBlockMgr.java
 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/block/AbstractTestBlockMgr.java
index 5a88ce9fdf..fb6f105fce 100644
--- 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/block/AbstractTestBlockMgr.java
+++ 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/block/AbstractTestBlockMgr.java
@@ -18,26 +18,28 @@
 
 package org.apache.jena.dboe.base.block;
 
+import static org.apache.jena.atlas.lib.ByteBufferLib.fill;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
 import java.nio.ByteBuffer;
 
-import static org.apache.jena.atlas.lib.ByteBufferLib.fill;
-import static org.junit.Assert.*;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 public abstract class AbstractTestBlockMgr {
     static final public int BlkSize  = 256;
 
     protected BlockMgr      blockMgr = null;
 
-    @Before
+    @BeforeEach
     public void before() {
         blockMgr = make();
         blockMgr.beginUpdate();
     }
 
-    @After
+    @AfterEach
     public void after() {
         if ( blockMgr != null ) {
             blockMgr.endUpdate();
@@ -48,10 +50,10 @@ public abstract class AbstractTestBlockMgr {
     @Test
     public void file01() {
         long x = blockMgr.allocLimit();
-        assertTrue("First allocLimit : " + x, x >= 0);
+        assertTrue(x >= 0, ()->"First allocLimit : " + x);
         // Assume no recycling.
         Block block = blockMgr.allocate(BlkSize);
-        assertTrue("Block inside allocate boundary", block.getId() >= x);
+        assertTrue(block.getId() >= x, ()->"Block inside allocate boundary");
         ByteBuffer bb = block.getByteBuffer();
         fill(bb, (byte)1);
         blockMgr.write(block);
@@ -127,6 +129,6 @@ public abstract class AbstractTestBlockMgr {
 
     protected static void contains(ByteBuffer bb, byte fillValue) {
         for ( int i = 0; i < bb.limit() ; i++ )
-            assertEquals("Index: " + i, bb.get(i), fillValue);
+            assertEquals(bb.get(i), fillValue, "Index: " + i);
     }
 }
diff --git 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/block/TS_Block.java
 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/block/TS_Block.java
index 8c260fdfbf..7987f9a6de 100644
--- 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/block/TS_Block.java
+++ 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/block/TS_Block.java
@@ -18,11 +18,11 @@
 
 package org.apache.jena.dboe.base.block;
 
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
+import org.junit.platform.suite.api.SelectClasses;
+import org.junit.platform.suite.api.Suite;
 
-@RunWith(Suite.class)
[email protected]( {
+@Suite
+@SelectClasses({
     TestBlockMgrMem.class
     , TestBlockMgrDirect.class
     , TestBlockMgrMapped.class
diff --git 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/block/TestBlockMgrDirect.java
 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/block/TestBlockMgrDirect.java
index 5cf7d0663b..bafd92686d 100644
--- 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/block/TestBlockMgrDirect.java
+++ 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/block/TestBlockMgrDirect.java
@@ -18,19 +18,20 @@
 
 package org.apache.jena.dboe.base.block;
 
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+
 import org.apache.jena.atlas.lib.FileOps;
 import org.apache.jena.dboe.ConfigTestDBOE;
 import org.apache.jena.dboe.base.file.BlockAccess;
 import org.apache.jena.dboe.base.file.BlockAccessDirect;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
 
 public class TestBlockMgrDirect extends AbstractTestBlockMgr
 {
     static final String filename = ConfigTestDBOE.getTestingDir()+"/block-mgr";
 
-    @BeforeClass static public void remove1() { FileOps.delete(filename); }
-    @AfterClass  static public void remove2() { FileOps.delete(filename); }
+    @BeforeAll static public void remove1() { FileOps.delete(filename); }
+    @AfterAll  static public void remove2() { FileOps.delete(filename); }
 
     @Override
     protected BlockMgr make() {
diff --git 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/block/TestBlockMgrMapped.java
 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/block/TestBlockMgrMapped.java
index 27a72cbd92..fe4c5b48ca 100644
--- 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/block/TestBlockMgrMapped.java
+++ 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/block/TestBlockMgrMapped.java
@@ -18,13 +18,14 @@
 
 package org.apache.jena.dboe.base.block;
 
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeAll;
+
 import org.apache.jena.atlas.lib.FileOps;
 import org.apache.jena.dboe.ConfigTestDBOE;
 import org.apache.jena.dboe.base.file.BlockAccess;
 import org.apache.jena.dboe.base.file.BlockAccessMapped;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
 
 public class TestBlockMgrMapped extends AbstractTestBlockMgr
 {
@@ -32,7 +33,7 @@ public class TestBlockMgrMapped extends AbstractTestBlockMgr
 
     // Windows is iffy about deleting memory mapped files.
 
-    @After public void after1()     { clearBlockMgr(); }
+    @AfterEach public void after1()     { clearBlockMgr(); }
 
     private void clearBlockMgr() {
         if ( blockMgr != null ) {
@@ -42,8 +43,8 @@ public class TestBlockMgrMapped extends AbstractTestBlockMgr
         }
     }
 
-    @BeforeClass static public void remove1() { 
FileOps.deleteSilent(filename); }
-    @AfterClass  static public void remove2() { 
FileOps.deleteSilent(filename); }
+    @BeforeAll static public void remove1() { FileOps.deleteSilent(filename); }
+    @AfterAll  static public void remove2() { FileOps.deleteSilent(filename); }
 
     @Override
     protected BlockMgr make() {
diff --git 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/block/TestBlockMgrTracked.java
 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/block/TestBlockMgrTracked.java
index 189b3ef0d6..04f71be44e 100644
--- 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/block/TestBlockMgrTracked.java
+++ 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/block/TestBlockMgrTracked.java
@@ -18,12 +18,14 @@
 
 package org.apache.jena.dboe.base.block;
 
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
 import java.nio.ByteBuffer;
 
-import org.junit.AfterClass;
-import static org.junit.Assert.*;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
 
 public class TestBlockMgrTracked
 {
@@ -31,13 +33,13 @@ public class TestBlockMgrTracked
 
     static boolean b;
 
-    @BeforeClass
+    @BeforeAll
     static public void beforeClass() {
         b = BlockMgrTracker.verbose;
         BlockMgrTracker.verbose = false;
     }
 
-    @AfterClass
+    @AfterAll
     static public void afterClass() {
         BlockMgrTracker.verbose = b;
     }
@@ -94,39 +96,37 @@ public class TestBlockMgrTracked
         mgr.endRead();
     }
 
-    @Test(expected=BlockException.class)
+    @Test
     public void track_03() {
         BlockMgr mgr = setup();
         write(mgr, 1234);
         write(mgr, 5678);
 
         mgr.beginRead();
-        Block b0 = mgr.getWrite(0);
-        mgr.endRead();
+        assertThrows(BlockException.class, ()->mgr.getWrite(0));
     }
 
-    @Test(expected=BlockException.class)
+    @Test
     public void track_04() {
         BlockMgr mgr = setup();
         write(mgr, 1234);
         mgr.beginRead();
         Block b0 = mgr.getRead(0);
-        mgr.promote(b0);
-        mgr.endRead();
+        assertThrows(BlockException.class, ()->mgr.promote(b0));
     }
 
-    @Test(expected=BlockException.class)
+    @Test
     public void track_05() {
         BlockMgr mgr = setup();
         mgr.beginRead();
-        mgr.endUpdate();
+        assertThrows(BlockException.class, ()->mgr.endUpdate());
     }
 
-    @Test(expected=BlockException.class)
+    @Test
     public void track_06() {
         BlockMgr mgr = setup();
         mgr.beginUpdate();
-        mgr.endRead();
+        assertThrows(BlockException.class, ()->mgr.endRead());
     }
 
 }
diff --git 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/buffer/TS_Buffer.java
 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/buffer/TS_Buffer.java
index 9733bc0f93..2bd8c3ddbd 100644
--- 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/buffer/TS_Buffer.java
+++ 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/buffer/TS_Buffer.java
@@ -18,11 +18,11 @@
 
 package org.apache.jena.dboe.base.buffer;
 
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
+import org.junit.platform.suite.api.SelectClasses;
+import org.junit.platform.suite.api.Suite;
 
-@RunWith(Suite.class)
[email protected]( {
+@Suite
+@SelectClasses({
     TestRecordBuffer.class
     , TestPtrBuffer.class
 })
diff --git 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/buffer/TestPtrBuffer.java
 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/buffer/TestPtrBuffer.java
index f3c35919aa..516776f3a8 100644
--- 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/buffer/TestPtrBuffer.java
+++ 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/buffer/TestPtrBuffer.java
@@ -18,24 +18,27 @@
 
 package org.apache.jena.dboe.base.buffer;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.nio.ByteBuffer;
 
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+
 import org.apache.jena.dboe.sys.SystemIndex;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
 
 public class TestPtrBuffer
 {
     static boolean originalNullOut;
-    @BeforeClass static public void beforeClass() {
+    @BeforeAll static public void beforeClass() {
         originalNullOut = SystemIndex.getNullOut();
         SystemIndex.setNullOut(true);
     }
 
-    @AfterClass static public void afterClass() {
+    @AfterAll static public void afterClass() {
         SystemIndex.setNullOut(originalNullOut);
     }
 
@@ -113,26 +116,26 @@ public class TestPtrBuffer
         contains(pb, 2, 4, -1, 6);
     }
 
-    // Errors - IllegalArgumentException
-    @Test(expected=BufferException.class)
+    // Errors - BufferException
+    @Test
     public void ptrbuffer09() {
         PtrBuffer pb = make(4,5);
         contains(pb, 2, 4, 6, 8);
-        pb.shiftDown(4);
+        assertThrows(BufferException.class, ()->pb.shiftDown(4));
     }
 
-    @Test(expected=BufferException.class)
+    @Test
     public void ptrbuffer10() {
         PtrBuffer pb = make(4,5);
         contains(pb, 2, 4, 6, 8);
-        pb.shiftUp(4);
+        assertThrows(BufferException.class, ()->pb.shiftUp(4));
     }
 
-    @Test(expected=BufferException.class)
+    @Test
     public void ptrbuffer11() {
         PtrBuffer pb = make(5,5);
         contains(pb, 2, 4, 6, 8, 10);
-        pb.add(12);
+        assertThrows(BufferException.class, ()->pb.add(12));
     }
 
     // Copy, duplicate, clear
@@ -269,12 +272,12 @@ public class TestPtrBuffer
 
     // ---- Support
     private static void contains(PtrBuffer pb, int... vals) {
-        assertEquals("Length mismatch: ", vals.length, pb.size());
+        assertEquals(vals.length, pb.size(), ()->"Length mismatch");
         for ( int i = 0; i < vals.length ; i++ )
             if ( vals[i] == -1 )
                 assertTrue(pb.isClear(i)) ;
             else
-                assertEquals("Value mismatch: ", vals[i], pb.get(i));
+                assertEquals(vals[i], pb.get(i), "Value mismatch");
     }
 
     // Make : 2,4,6,8, ..
diff --git 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/buffer/TestRecordBuffer.java
 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/buffer/TestRecordBuffer.java
index 9f2a2adbda..36e5e8f0b7 100644
--- 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/buffer/TestRecordBuffer.java
+++ 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/buffer/TestRecordBuffer.java
@@ -20,30 +20,33 @@ package org.apache.jena.dboe.base.buffer;
 
 import static org.apache.jena.dboe.test.RecordLib.intToRecord;
 import static org.apache.jena.dboe.test.RecordLib.r;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.util.Iterator;
 import java.util.List;
 
-import static org.junit.Assert.*;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+
 import org.apache.jena.dboe.base.record.Record;
 import org.apache.jena.dboe.base.record.RecordFactory;
 import org.apache.jena.dboe.sys.SystemIndex;
 import org.apache.jena.dboe.test.RecordLib;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
 
 public class TestRecordBuffer
 {
     static RecordFactory recordFactory = new 
RecordFactory(RecordLib.TestRecordLength, 0);
 
     static boolean originalNullOut;
-    @BeforeClass static public void beforeClass() {
+    @BeforeAll static public void beforeClass() {
         originalNullOut = SystemIndex.getNullOut();
         SystemIndex.setNullOut(true);
     }
 
-    @AfterClass static public void afterClass() {
+    @AfterAll static public void afterClass() {
         SystemIndex.setNullOut(originalNullOut);
     }
 
@@ -138,25 +141,25 @@ public class TestRecordBuffer
 
     // Errors
 
-    @Test(expected=BufferException.class)
+    @Test
     public void recBuffer09() {
         RecordBuffer rb = make(4,5);
         contains(rb, 2, 4, 6, 8);
-        rb.shiftDown(4);
+        assertThrows(BufferException.class, ()->rb.shiftDown(4));
     }
 
-    @Test(expected=BufferException.class)
+    @Test
     public void recBuffer10() {
         RecordBuffer rb = make(4,5);
         contains(rb, 2, 4, 6, 8);
-        rb.shiftUp(4);
+        assertThrows(BufferException.class, ()->rb.shiftUp(4));
     }
 
-    @Test(expected=BufferException.class)
+    @Test
     public void recBuffer11() {
         RecordBuffer rb = make(5,5);
         contains(rb, 2, 4, 6, 8, 10);
-        rb.add(r(12));
+        assertThrows(BufferException.class, ()->rb.add(r(12)));
     }
 
     // Copy, duplicate, clear
@@ -269,7 +272,7 @@ public class TestRecordBuffer
 
     // ---- Support
     private static void contains(RecordBuffer rb, int... vals) {
-        assertEquals("Length mismatch: ", vals.length, rb.size());
+        assertEquals(vals.length, rb.size(), "Length mismatch: ");
 
         for ( int i = 0; i < vals.length ; i++ )
             if ( vals[i] == -1 )
@@ -278,17 +281,17 @@ public class TestRecordBuffer
                 Record r = RecordLib.intToRecord(vals[i]);
                 Record r2 = rb.get(i);
                 int x = RecordLib.recordToInt(r2);
-                assertEquals("Value mismatch: ", vals[i], x);
+                assertEquals(vals[i], x, "Value mismatch: ");
             }
     }
 
     private static void same(Iterator<Record> iter, int... vals) {
         List<Integer> list = RecordLib.toIntList(iter);
-        assertEquals("Length mismatch: ", vals.length, list.size());
+        assertEquals(vals.length, list.size(), "Length mismatch: ");
 
         for ( int i = 0; i < vals.length ; i++ ) {
             int x = list.get(i);
-            assertEquals("Value mismatch: ", vals[i], x);
+            assertEquals(vals[i], x, "Value mismatch: ");
             }
     }
 
diff --git 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/AbstractTestBinaryDataFile.java
 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/AbstractTestBinaryDataFile.java
index 473d6d0119..b91ca4b727 100644
--- 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/AbstractTestBinaryDataFile.java
+++ 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/AbstractTestBinaryDataFile.java
@@ -18,12 +18,16 @@
 
 package org.apache.jena.dboe.base.file;
 
-import org.apache.jena.atlas.lib.StrUtils;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.*;
+import org.apache.jena.atlas.lib.StrUtils;
 
 public abstract class AbstractTestBinaryDataFile {
     private BinaryDataFile file;
@@ -37,13 +41,13 @@ public abstract class AbstractTestBinaryDataFile {
         file.close();
     }
 
-    @Before public void before() {
+    @BeforeEach public void before() {
         file = createBinaryDataFile();
         file.open();
         file.truncate(0);
     }
 
-    @After public void after() {
+    @AfterEach public void after() {
         releaseBinaryDataFile(file);
     }
 
diff --git 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/AbstractTestBlockAccessFixedSize.java
 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/AbstractTestBlockAccessFixedSize.java
index a7ad9d67c7..5576813d8c 100644
--- 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/AbstractTestBlockAccessFixedSize.java
+++ 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/AbstractTestBlockAccessFixedSize.java
@@ -19,12 +19,12 @@
 package org.apache.jena.dboe.base.file;
 
 import static org.apache.jena.dboe.test.BufferTestLib.sameValue;
-import static org.junit.Assert.assertNotSame;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertNotSame;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import org.apache.jena.dboe.base.block.Block;
 
@@ -46,8 +46,8 @@ public abstract class AbstractTestBlockAccessFixedSize {
     }
 
     private BlockAccess file;
-    @Before public void before() { file = make(); }
-    @After  public void after()  { file.close(); }
+    @BeforeEach public void before() { file = make(); }
+    @AfterEach  public void after()  { file.close(); }
 
     @Test public void fileaccess_01() {
         assertTrue(file.isEmpty());
@@ -82,14 +82,4 @@ public abstract class AbstractTestBlockAccessFixedSize {
         assertNotSame(b8, b9);
         assertTrue(b8.getId() == b9.getId());
     }
-
-    @Test(expected=FileException.class)
-    public void fileaccess_05() {
-        Block b1 = data(file, 10);
-        Block b2 = data(file, 20);
-        file.write(b1);
-
-        // Should not work. b2 not written.
-        Block b2a = file.read(b2.getId());
-    }
 }
diff --git 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/AbstractTestBlockAccessVarSize.java
 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/AbstractTestBlockAccessVarSize.java
index b6dd8bdc38..c991e9bf03 100644
--- 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/AbstractTestBlockAccessVarSize.java
+++ 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/AbstractTestBlockAccessVarSize.java
@@ -18,13 +18,12 @@
 
 package org.apache.jena.dboe.base.file;
 
-import static org.apache.jena.dboe.test.BufferTestLib.*;
+import static org.apache.jena.dboe.test.BufferTestLib.sameValue;
+import static org.junit.jupiter.api.Assertions.assertNotSame;
 
-import org.apache.jena.dboe.base.block.Block;
-
-import static org.junit.Assert.assertNotSame;
+import org.junit.jupiter.api.Test;
 
-import org.junit.Test;
+import org.apache.jena.dboe.base.block.Block;
 
 public abstract class AbstractTestBlockAccessVarSize extends 
AbstractTestBlockAccessFixedSize
 {
diff --git 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/AbstractTestChannel.java
 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/AbstractTestChannel.java
index 3a6cf67b5d..faf3428004 100644
--- 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/AbstractTestChannel.java
+++ 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/AbstractTestChannel.java
@@ -18,20 +18,22 @@
 
 package org.apache.jena.dboe.base.file;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
 import java.nio.ByteBuffer;
 
-import static org.junit.Assert.*;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 public abstract class AbstractTestChannel
 {
     protected abstract BufferChannel open();
 
     private BufferChannel store;
-    @Before public void before() { store = open(); }
-    @After  public void after()  { store.close(); }
+    @BeforeEach public void before() { store = open(); }
+    @AfterEach  public void after()  { store.close(); }
 
     static final int blkSize = 100;
 
diff --git 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/TS_File.java
 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/TS_File.java
index 514d5e9d22..a88cbe7e07 100644
--- 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/TS_File.java
+++ 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/TS_File.java
@@ -18,11 +18,11 @@
 
 package org.apache.jena.dboe.base.file;
 
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
+import org.junit.platform.suite.api.SelectClasses;
+import org.junit.platform.suite.api.Suite;
 
-@RunWith(Suite.class)
[email protected]( {
+@Suite
+@SelectClasses({
     TestMetaFile.class
     , TestSegmentedMemBuffer.class
     , TestChannelMem.class
diff --git 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/TestBinaryDataRAFInitial.java
 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/TestBinaryDataRAFInitial.java
index 059d026900..273ef551f3 100644
--- 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/TestBinaryDataRAFInitial.java
+++ 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/TestBinaryDataRAFInitial.java
@@ -18,12 +18,15 @@
 
 package org.apache.jena.dboe.base.file;
 
-import org.apache.jena.atlas.RuntimeIOException;
-import org.junit.Test;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.*;
+import org.apache.jena.atlas.RuntimeIOException;
 
-// Additional tests that do not want the @Before/@After of 
AbstractTestBinaryDataFile
+// Additional tests that do not want the @BeforeEach/@AfterEach of 
AbstractTestBinaryDataFile
 public class TestBinaryDataRAFInitial  {
     public static String FILE = TS_File.FILE;
     private BinaryDataFileRandomAccess file;
@@ -37,20 +40,20 @@ public class TestBinaryDataRAFInitial  {
         assertFalse(file.isOpen());
     }
 
-    @Test (expected=RuntimeIOException.class)
+    @Test
     public void open_02() {
         file = new BinaryDataFileRandomAccess(FILE);
         file.open();
         file.close();
-        file.sync();
+        assertThrows(RuntimeIOException.class, ()->file.sync());
     }
 
-    @Test (expected=RuntimeIOException.class)
+    @Test
     public void open_03() {
         file = new BinaryDataFileRandomAccess(FILE);
         file.open();
         file.close();
-        file.truncate(0);
+        assertThrows(RuntimeIOException.class, ()->file.truncate(0));
     }
 
 }
diff --git 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/TestBlockAccessDirect.java
 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/TestBlockAccessDirect.java
index 4ae60b6c22..239788b92f 100644
--- 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/TestBlockAccessDirect.java
+++ 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/TestBlockAccessDirect.java
@@ -18,9 +18,10 @@
 
 package org.apache.jena.dboe.base.file;
 
+import org.junit.jupiter.api.AfterAll;
+
 import org.apache.jena.atlas.lib.FileOps;
 import org.apache.jena.dboe.ConfigTestDBOE;
-import org.junit.AfterClass;
 
 public class TestBlockAccessDirect extends AbstractTestBlockAccessFixedSize
 {
@@ -31,7 +32,7 @@ public class TestBlockAccessDirect extends 
AbstractTestBlockAccessFixedSize
         super(BlockSize);
     }
 
-    @AfterClass public static void cleanup() { FileOps.deleteSilent(filename); 
}
+    @AfterAll public static void cleanup() { FileOps.deleteSilent(filename); }
 
     @Override
     protected BlockAccess make() {
diff --git 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/TestBlockAccessMapped.java
 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/TestBlockAccessMapped.java
index 8e89476044..0c7142bae9 100644
--- 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/TestBlockAccessMapped.java
+++ 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/TestBlockAccessMapped.java
@@ -18,9 +18,10 @@
 
 package org.apache.jena.dboe.base.file;
 
+import org.junit.jupiter.api.AfterAll;
+
 import org.apache.jena.atlas.lib.FileOps;
 import org.apache.jena.dboe.ConfigTestDBOE;
-import org.junit.AfterClass;
 
 public class TestBlockAccessMapped extends AbstractTestBlockAccessFixedSize
 {
@@ -31,7 +32,7 @@ public class TestBlockAccessMapped extends 
AbstractTestBlockAccessFixedSize
         super(BlockSize);
     }
 
-    @AfterClass public static void cleanup() { FileOps.deleteSilent(filename); 
}
+    @AfterAll public static void cleanup() { FileOps.deleteSilent(filename); }
 
     static int counter = 0;
 
diff --git 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/TestChannelFile.java
 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/TestChannelFile.java
index c666c8dfcf..8323fb5588 100644
--- 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/TestChannelFile.java
+++ 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/TestChannelFile.java
@@ -18,15 +18,16 @@
 
 package org.apache.jena.dboe.base.file;
 
+import org.junit.jupiter.api.AfterAll;
+
 import org.apache.jena.atlas.lib.FileOps;
 import org.apache.jena.dboe.ConfigTestDBOE;
-import org.junit.AfterClass;
 
 public class TestChannelFile extends AbstractTestChannel
 {
     static String filename = ConfigTestDBOE.getTestingDir()+"/test-storage";
 
-    @AfterClass public static void cleanup() { FileOps.deleteSilent(filename); 
}
+    @AfterAll public static void cleanup() { FileOps.deleteSilent(filename); }
 
     @Override
     protected BufferChannel open() {
diff --git 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/TestMetaFile.java
 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/TestMetaFile.java
index 19c3adf112..3e6b2413d2 100644
--- 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/TestMetaFile.java
+++ 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/TestMetaFile.java
@@ -18,16 +18,16 @@
 
 package org.apache.jena.dboe.base.file;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.io.File;
 
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import org.apache.jena.dboe.ConfigTestDBOE;
 import org.apache.jena.dboe.sys.Names;
@@ -37,7 +37,7 @@ public class TestMetaFile
     String testfile = null;
     String testfileMeta = null;
 
-    @Before public void before() {
+    @BeforeEach public void before() {
         testfile = ConfigTestDBOE.getTestingDir()+"/file";
         testfileMeta = ConfigTestDBOE.getTestingDir()+"/file."+Names.extMeta;
         File f = new File(testfileMeta);
@@ -65,7 +65,7 @@ public class TestMetaFile
 
     // Test MetaBase
 
-    @After public void afterClass()
+    @AfterEach public void afterClass()
     { clear(); }
 
     private void clear() {
diff --git 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/TestProcessFileLock.java
 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/TestProcessFileLock.java
index 3b8331b5fb..b2610a01b2 100644
--- 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/TestProcessFileLock.java
+++ 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/TestProcessFileLock.java
@@ -18,37 +18,32 @@
 
 package org.apache.jena.dboe.base.file;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotSame;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.*;
 
 import java.io.File;
 import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.io.TempDir;
 
-import org.apache.jena.atlas.io.IO;
 import org.apache.jena.dboe.sys.Names;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.TemporaryFolder;
 
 public class TestProcessFileLock {
 
     private String lockfile;
 
-    //Using a per-test rule is "doubly-safe" because we clear the process 
state.
-    @Rule
-    public TemporaryFolder tempFolder = new TemporaryFolder();
+    @TempDir Path tempDir;
 
-    @Before public void beforeTest() {
+    @BeforeEach public void beforeTest() {
+        Path tmp = tempDir.resolve(Names.TDB_LOCK_FILE);
+        lockfile = tmp.toAbsolutePath().toString();
         try {
-            File f = tempFolder.newFile(Names.TDB_LOCK_FILE);
-            lockfile = f.getCanonicalPath();
-        }
-        catch (IOException e) {
-            IO.exception(e);
+            Files.createFile(tmp);
+        } catch (IOException e) {
+            e.printStackTrace();
         }
     }
 
@@ -80,25 +75,26 @@ public class TestProcessFileLock {
         assertFalse(lock.isLockedHere());
     }
 
-    @Test(expected=AlreadyLocked.class)
+    @Test
     public void process_lock_5() {
         ProcessFileLock lock = ProcessFileLock.create(lockfile);
         lock.lockEx();
-        lock.lockEx();
+        assertThrows(AlreadyLocked.class, ()->lock.lockEx());
     }
 
-    @Test(expected=AlreadyLocked.class)
+    @Test
     public void process_lock_6() {
         ProcessFileLock lock = ProcessFileLock.create(lockfile);
         lock.lockEx();
-        boolean b = lock.tryLock();
-        assertFalse(b);
+        // Held by this process => exception
+        assertThrows(AlreadyLocked.class, ()->lock.tryLock());
     }
 
-    @Test(expected=AlreadyLocked.class)
+    @Test
     public void process_lock_7() {
         ProcessFileLock lock = ProcessFileLock.create(lockfile);
         lock.tryLock();
-        lock.tryLock();
+        // Held by this process => exception
+        assertThrows(AlreadyLocked.class, ()->lock.tryLock());
     }
 }
diff --git 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/TestSegmentedMemBuffer.java
 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/TestSegmentedMemBuffer.java
index 517758491e..a56a36b9d1 100644
--- 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/TestSegmentedMemBuffer.java
+++ 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/file/TestSegmentedMemBuffer.java
@@ -18,15 +18,15 @@
 
 package org.apache.jena.dboe.base.file;
 
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.nio.ByteBuffer;
 import java.util.Arrays;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 public class TestSegmentedMemBuffer {
     private static byte[] data1 = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
diff --git 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/record/TS_Record.java
 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/record/TS_Record.java
index 2f7a4aa497..1e5a733f2b 100644
--- 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/record/TS_Record.java
+++ 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/record/TS_Record.java
@@ -20,11 +20,11 @@ package org.apache.jena.dboe.base.record;
 
 import org.apache.jena.dboe.base.buffer.TestPtrBuffer;
 import org.apache.jena.dboe.base.buffer.TestRecordBuffer;
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
+import org.junit.platform.suite.api.SelectClasses;
+import org.junit.platform.suite.api.Suite;
 
-@RunWith(Suite.class)
[email protected]( {
+@Suite
+@SelectClasses({
     TestRecord.class ,
     TestPtrBuffer.class ,
     TestRecordBuffer.class
diff --git 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/record/TestRecord.java
 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/record/TestRecord.java
index 9c396d31b3..58e5179991 100644
--- 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/record/TestRecord.java
+++ 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/record/TestRecord.java
@@ -20,9 +20,11 @@ package org.apache.jena.dboe.base.record;
 
 import static org.apache.jena.dboe.test.RecordLib.intToRecord;
 import static org.apache.jena.dboe.test.RecordLib.recordToInt;
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 public class TestRecord
 {
diff --git 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/recordfile/TS_RecordFile.java
 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/recordfile/TS_RecordFile.java
index c949b98062..c166773875 100644
--- 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/recordfile/TS_RecordFile.java
+++ 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/recordfile/TS_RecordFile.java
@@ -18,11 +18,11 @@
 
 package org.apache.jena.dboe.base.recordfile;
 
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
+import org.junit.platform.suite.api.SelectClasses;
+import org.junit.platform.suite.api.Suite;
 
-@RunWith(Suite.class)
[email protected]( {
+@Suite
+@SelectClasses({
     TestRecordBufferPage.class
 })
 
diff --git 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/recordfile/TestRecordBufferPage.java
 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/recordfile/TestRecordBufferPage.java
index 78f910cc75..ed5f1b8399 100644
--- 
a/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/recordfile/TestRecordBufferPage.java
+++ 
b/jena-db/jena-dboe-base/src/test/java/org/apache/jena/dboe/base/recordfile/TestRecordBufferPage.java
@@ -18,11 +18,11 @@
 
 package org.apache.jena.dboe.base.recordfile;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
 
 import org.apache.jena.dboe.base.block.BlockMgr;
 import org.apache.jena.dboe.base.block.BlockMgrFactory;
@@ -42,12 +42,12 @@ public class TestRecordBufferPage
     static RecordFactory factory = new RecordFactory(2, 0);
 
     static boolean originalNullOut;
-    @BeforeClass static public void beforeClass() {
+    @BeforeAll static public void beforeClass() {
         originalNullOut = SystemIndex.getNullOut();
         SystemIndex.setNullOut(true);
     }
 
-    @AfterClass static public void afterClass() {
+    @AfterAll static public void afterClass() {
         SystemIndex.setNullOut(originalNullOut);
     }
 
diff --git a/jena-db/jena-dboe-index-test/pom.xml 
b/jena-db/jena-dboe-index-test/pom.xml
index 831f2557fd..a2f945ac1d 100644
--- a/jena-db/jena-dboe-index-test/pom.xml
+++ b/jena-db/jena-dboe-index-test/pom.xml
@@ -54,12 +54,6 @@
       <scope>compile</scope>
     </dependency>
     
-    <dependency>
-      <groupId>org.junit.vintage</groupId>
-      <artifactId>junit-vintage-engine</artifactId>
-      <scope>compile</scope>
-    </dependency>
-    
     <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
diff --git 
a/jena-db/jena-dboe-index-test/src/main/java/org/apache/jena/dboe/index/test/TS_Index.java
 
b/jena-db/jena-dboe-index-test/src/main/java/org/apache/jena/dboe/index/test/TS_Index.java
index e4e1122728..7753e5ce0c 100644
--- 
a/jena-db/jena-dboe-index-test/src/main/java/org/apache/jena/dboe/index/test/TS_Index.java
+++ 
b/jena-db/jena-dboe-index-test/src/main/java/org/apache/jena/dboe/index/test/TS_Index.java
@@ -18,11 +18,11 @@
 
 package org.apache.jena.dboe.index.test;
 
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
+import org.junit.platform.suite.api.SelectClasses;
+import org.junit.platform.suite.api.Suite;
 
-@RunWith(Suite.class)
[email protected]( {
+@Suite
+@SelectClasses({
     TestIndexMem.class
 } )
 
diff --git 
a/jena-db/jena-dboe-index-test/src/main/java/org/apache/jena/dboe/index/testlib/AbstractTestIndex.java
 
b/jena-db/jena-dboe-index-test/src/main/java/org/apache/jena/dboe/index/testlib/AbstractTestIndex.java
index 2f965cbeaf..c02b20b6c6 100644
--- 
a/jena-db/jena-dboe-index-test/src/main/java/org/apache/jena/dboe/index/testlib/AbstractTestIndex.java
+++ 
b/jena-db/jena-dboe-index-test/src/main/java/org/apache/jena/dboe/index/testlib/AbstractTestIndex.java
@@ -22,23 +22,22 @@ import static 
org.apache.jena.dboe.index.testlib.IndexTestLib.testDelete;
 import static 
org.apache.jena.dboe.index.testlib.IndexTestLib.testIndexContents;
 import static org.apache.jena.dboe.index.testlib.IndexTestLib.testInsert;
 import static org.apache.jena.dboe.test.RecordLib.intToRecord;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.Test;
 
 import org.apache.jena.dboe.base.record.Record;
 import org.apache.jena.dboe.index.Index;
 import org.apache.jena.dboe.test.RecordLib;
-import org.junit.After ;
-import org.junit.Test ;
-
-//import org.apache.jena.tdb.base.record.RecordLib;
 
 public abstract class AbstractTestIndex
 {
-    Index index = null;
+    protected Index index = null;
 
-    @After public void afterTest() {
+    @AfterEach public void afterTest() {
         if ( index != null )
             index.close();
         index = null;
diff --git 
a/jena-db/jena-dboe-index-test/src/main/java/org/apache/jena/dboe/index/testlib/AbstractTestRangeIndex.java
 
b/jena-db/jena-dboe-index-test/src/main/java/org/apache/jena/dboe/index/testlib/AbstractTestRangeIndex.java
index 98ab45f318..f03367e4a9 100644
--- 
a/jena-db/jena-dboe-index-test/src/main/java/org/apache/jena/dboe/index/testlib/AbstractTestRangeIndex.java
+++ 
b/jena-db/jena-dboe-index-test/src/main/java/org/apache/jena/dboe/index/testlib/AbstractTestRangeIndex.java
@@ -25,12 +25,15 @@ import static 
org.apache.jena.dboe.index.testlib.IndexTestLib.testInsertDelete;
 import static org.apache.jena.dboe.test.RecordLib.intToRecord;
 import static org.apache.jena.dboe.test.RecordLib.r;
 import static org.apache.jena.dboe.test.RecordLib.toIntList;
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.util.Iterator;
 import java.util.List;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import org.apache.jena.dboe.base.record.Record;
 import org.apache.jena.dboe.index.RangeIndex;
diff --git 
a/jena-db/jena-dboe-index-test/src/main/java/org/apache/jena/dboe/index/testlib/IndexTestLib.java
 
b/jena-db/jena-dboe-index-test/src/main/java/org/apache/jena/dboe/index/testlib/IndexTestLib.java
index 640cef6f72..24ae29298d 100644
--- 
a/jena-db/jena-dboe-index-test/src/main/java/org/apache/jena/dboe/index/testlib/IndexTestLib.java
+++ 
b/jena-db/jena-dboe-index-test/src/main/java/org/apache/jena/dboe/index/testlib/IndexTestLib.java
@@ -26,10 +26,10 @@ import static org.apache.jena.atlas.test.Gen.strings;
 import static org.apache.jena.dboe.test.RecordLib.intToRecord;
 import static org.apache.jena.dboe.test.RecordLib.r;
 import static org.apache.jena.dboe.test.RecordLib.toIntList;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.fail;
-import static org.junit.Assert.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.fail;
 
 import java.util.*;
 
@@ -86,7 +86,7 @@ public class IndexTestLib {
             for ( Integer ii : x.subSet(lo, hi) )
                 expected.add(ii);
             if ( ! expected.equals(slice) )
-                assertEquals(format("(%d,%d)", lo, hi), expected, slice);
+                assertEquals(expected, slice, format("(%d,%d)", lo, hi));
         }
     }
 
@@ -222,8 +222,8 @@ public class IndexTestLib {
         // Make a unique list of expected records. Remove duplicates
         List<Integer> y = unique(asList(records));
 
-        assertEquals("Expected records size and tree size different", 
y.size(), index.size());
-        assertEquals("Expected records size and iteration over all keys are of 
different sizes", y.size(), x.size());
+        assertEquals(y.size(), index.size(), ()->"Expected records size and 
tree size different");
+        assertEquals(y.size(), x.size(), ()->"Expected records size and 
iteration over all keys are of different sizes");
 
         if ( index instanceof RangeIndex ) {
             // Check sorted order
diff --git 
a/jena-db/jena-dboe-storage/src/test/java/org/apache/jena/dboe/storage/TC_StoreBase.java
 
b/jena-db/jena-dboe-storage/src/test/java/org/apache/jena/dboe/storage/TC_StoreBase.java
index f5d7b4c6ae..bd7d42524f 100644
--- 
a/jena-db/jena-dboe-storage/src/test/java/org/apache/jena/dboe/storage/TC_StoreBase.java
+++ 
b/jena-db/jena-dboe-storage/src/test/java/org/apache/jena/dboe/storage/TC_StoreBase.java
@@ -20,11 +20,11 @@ package org.apache.jena.dboe.storage;
 
 import org.apache.jena.dboe.storage.prefixes.TS_Prefixes;
 import org.apache.jena.dboe.storage.storage.TS_Storage;
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
+import org.junit.platform.suite.api.SelectClasses;
+import org.junit.platform.suite.api.Suite;
 
-@RunWith(Suite.class)
[email protected]( {
+@Suite
+@SelectClasses({
     TS_Storage.class,
     TS_Prefixes.class
 })
diff --git 
a/jena-db/jena-dboe-storage/src/test/java/org/apache/jena/dboe/storage/prefixes/AbstractTestDatasetPrefixesStorage.java
 
b/jena-db/jena-dboe-storage/src/test/java/org/apache/jena/dboe/storage/prefixes/AbstractTestDatasetPrefixesStorage.java
index 62e5c8ed09..f11c2d0486 100644
--- 
a/jena-db/jena-dboe-storage/src/test/java/org/apache/jena/dboe/storage/prefixes/AbstractTestDatasetPrefixesStorage.java
+++ 
b/jena-db/jena-dboe-storage/src/test/java/org/apache/jena/dboe/storage/prefixes/AbstractTestDatasetPrefixesStorage.java
@@ -18,17 +18,18 @@
 
 package org.apache.jena.dboe.storage.prefixes;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
 
 import java.util.List;
 
+import org.junit.jupiter.api.Test;
+
 import org.apache.jena.atlas.iterator.Iter;
 import org.apache.jena.dboe.storage.StoragePrefixes;
 import org.apache.jena.graph.Node;
 import org.apache.jena.graph.NodeFactory;
 import org.apache.jena.riot.system.PrefixEntry;
-import org.junit.Test;
 
 public abstract class AbstractTestDatasetPrefixesStorage
 {
diff --git 
a/jena-db/jena-dboe-storage/src/test/java/org/apache/jena/dboe/storage/prefixes/TS_Prefixes.java
 
b/jena-db/jena-dboe-storage/src/test/java/org/apache/jena/dboe/storage/prefixes/TS_Prefixes.java
index ff0f7f2cfd..d22a8d1d3c 100644
--- 
a/jena-db/jena-dboe-storage/src/test/java/org/apache/jena/dboe/storage/prefixes/TS_Prefixes.java
+++ 
b/jena-db/jena-dboe-storage/src/test/java/org/apache/jena/dboe/storage/prefixes/TS_Prefixes.java
@@ -18,11 +18,11 @@
 
 package org.apache.jena.dboe.storage.prefixes;
 
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
+import org.junit.platform.suite.api.SelectClasses;
+import org.junit.platform.suite.api.Suite;
 
-@RunWith(Suite.class)
[email protected]( {
+@Suite
+@SelectClasses({
     TestDatasetPrefixesMem.class
     , TestPrefixMappingOverDatasetPrefixes.class
     , TestPrefixMappingOverDatasetPrefixes2.class
diff --git 
a/jena-db/jena-dboe-storage/src/test/java/org/apache/jena/dboe/storage/storage/BaseTestStorageRDF.java
 
b/jena-db/jena-dboe-storage/src/test/java/org/apache/jena/dboe/storage/storage/BaseTestStorageRDF.java
index 79a4388352..cc9e2c617f 100644
--- 
a/jena-db/jena-dboe-storage/src/test/java/org/apache/jena/dboe/storage/storage/BaseTestStorageRDF.java
+++ 
b/jena-db/jena-dboe-storage/src/test/java/org/apache/jena/dboe/storage/storage/BaseTestStorageRDF.java
@@ -18,26 +18,27 @@
 
 package org.apache.jena.dboe.storage.storage;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.util.Iterator;
 import java.util.stream.Stream;
 
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
 import org.apache.jena.atlas.iterator.Iter;
 import org.apache.jena.dboe.storage.StorageRDF;
 import org.apache.jena.graph.Triple;
 import org.apache.jena.sparql.core.Quad;
 import org.apache.jena.sparql.sse.SSE;
-import org.junit.Before;
-import org.junit.Test;
 
 public abstract class BaseTestStorageRDF {
 
     private StorageRDF storage;
 
     protected abstract StorageRDF create();
-    @Before public void before() {
+    @BeforeEach public void before() {
         this.storage = create();
     }
 
@@ -50,16 +51,16 @@ public abstract class BaseTestStorageRDF {
 
     @Test public void storage_empty_01() {
         boolean b1 = isEmpty(storage.find(null, null, null));
-        assertTrue("triples", b1);
+        assertTrue(b1, "triples");
         boolean b2 = isEmpty(storage.find(null, null, null, null));
-        assertTrue("quads", b2);
+        assertTrue(b2, "quads");
     }
 
     @Test public void storage_empty_02() {
         boolean b1 = isEmpty(storage.find(null, null, null));
-        assertTrue("findDftGraph", b1);
+        assertTrue(b1, "findDftGraph");
         boolean b2 = isEmpty(storage.findUnionGraph(null, null, null));
-        assertTrue("findUnionGraph", b2);
+        assertTrue(b2, "findUnionGraph");
     }
 
     @Test public void storage_triples_01() {
@@ -86,16 +87,16 @@ public abstract class BaseTestStorageRDF {
 
     @Test public void storage_empty_01_stream() {
         boolean b1 = isEmpty(storage.stream(null, null, null));
-        assertTrue("triples", b1);
+        assertTrue(b1, "triples");
         boolean b2 = isEmpty(storage.stream(null, null, null, null));
-        assertTrue("quads", b2);
+        assertTrue(b2, "quads");
     }
 
     @Test public void storage_empty_02_stream() {
         boolean b1 = isEmpty(storage.stream(null, null, null));
-        assertTrue("findDftGraph", b1);
+        assertTrue(b1, "findDftGraph");
         boolean b2 = isEmpty(storage.streamUnionGraph(null, null, null));
-        assertTrue("findUnionGraph", b2);
+        assertTrue(b2, "findUnionGraph");
     }
 
     @Test public void storage_triples_01_stream() {
diff --git 
a/jena-db/jena-dboe-storage/src/test/java/org/apache/jena/dboe/storage/storage/TS_Storage.java
 
b/jena-db/jena-dboe-storage/src/test/java/org/apache/jena/dboe/storage/storage/TS_Storage.java
index 76eddc5255..0c041c7041 100644
--- 
a/jena-db/jena-dboe-storage/src/test/java/org/apache/jena/dboe/storage/storage/TS_Storage.java
+++ 
b/jena-db/jena-dboe-storage/src/test/java/org/apache/jena/dboe/storage/storage/TS_Storage.java
@@ -18,12 +18,12 @@
 
 package org.apache.jena.dboe.storage.storage;
 
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
+import org.junit.platform.suite.api.SelectClasses;
+import org.junit.platform.suite.api.Suite;
 
-@RunWith(Suite.class)
[email protected]( {
-    // Most testing happens via the dataset tests run on dataset built out of 
StorageRDF. 
+@Suite
+@SelectClasses({
+    // Most testing happens via the dataset tests run on dataset built out of 
StorageRDF.
     TestStorageSimple.class
     , TestDatasetGraphStorageTests.class
     , TestDatasetGraphStorageFindTests.class
diff --git 
a/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/TC_TransData.java
 
b/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/TC_TransData.java
index ee2619758f..42cdb58640 100644
--- 
a/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/TC_TransData.java
+++ 
b/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/TC_TransData.java
@@ -21,11 +21,11 @@ package org.apache.jena.dboe.trans;
 import org.apache.jena.dboe.trans.bplustree.TS_TxnBPTree;
 import org.apache.jena.dboe.trans.data.TS_TransactionalData;
 import org.apache.jena.dboe.trans.recovery.TestRecovery;
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
+import org.junit.platform.suite.api.SelectClasses;
+import org.junit.platform.suite.api.Suite;
 
-@RunWith(Suite.class)
[email protected]( {
+@Suite
+@SelectClasses({
     TS_TransactionalData.class
     , TS_TxnBPTree.class
     , TestRecovery.class
diff --git 
a/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/bplustree/TS_TxnBPTree.java
 
b/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/bplustree/TS_TxnBPTree.java
index 69226803ff..8ea0f32a5a 100644
--- 
a/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/bplustree/TS_TxnBPTree.java
+++ 
b/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/bplustree/TS_TxnBPTree.java
@@ -19,12 +19,11 @@
 package org.apache.jena.dboe.trans.bplustree;
 
 import 
org.apache.jena.dboe.trans.bplustree.rewriter.TestBPlusTreeRewriterNonTxn;
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-
-@RunWith(Suite.class)
[email protected]( {
+import org.junit.platform.suite.api.SelectClasses;
+import org.junit.platform.suite.api.Suite;
 
+@Suite
+@SelectClasses({
     // Non-transactional tests -- that is, algorithms and machinery.
     TestBPTreeRecordsNonTxn.class,
     TestBPlusTreeIndexNonTxn.class,
diff --git 
a/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/bplustree/TestBPTreeDistinctKeys.java
 
b/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/bplustree/TestBPTreeDistinctKeys.java
index ff9bf11113..b0f9588cbd 100644
--- 
a/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/bplustree/TestBPTreeDistinctKeys.java
+++ 
b/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/bplustree/TestBPTreeDistinctKeys.java
@@ -18,25 +18,31 @@
 
 package org.apache.jena.dboe.trans.bplustree;
 
+import static org.apache.jena.dboe.index.testlib.IndexTestLib.testInsert;
+import static org.apache.jena.dboe.test.RecordLib.TestRecordLength;
+import static org.apache.jena.dboe.test.RecordLib.toIntList;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.fail;
+
+import java.io.*;
+import java.util.*;
+import java.util.stream.Stream;
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedClass;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
 import org.apache.jena.atlas.io.IndentedWriter;
 import org.apache.jena.atlas.lib.Bytes;
 import org.apache.jena.dboe.base.record.Record;
 import org.apache.jena.dboe.base.record.RecordFactory;
 import org.apache.jena.dboe.test.RecordLib;
 
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-
-import java.io.*;
-import java.util.*;
-
-import static org.apache.jena.dboe.index.testlib.IndexTestLib.testInsert;
-import static org.apache.jena.dboe.test.RecordLib.TestRecordLength;
-import static org.apache.jena.dboe.test.RecordLib.toIntList;
-import static org.junit.Assert.*;
-
-@RunWith(Parameterized.class)
+@ParameterizedClass(name = "Random Size={0}, Tree Order={1}, Node dup={2}, 
Record dup={3}")
+@MethodSource("provideArgs")
 public class TestBPTreeDistinctKeys extends TestBPTreeModes {
     public static final byte[] DISTINCT_KEYS = new byte[] {
             0x00,
@@ -55,25 +61,25 @@ public class TestBPTreeDistinctKeys extends TestBPTreeModes 
{
 
     public static final int[] TREE_ORDERS = new int[] { 2, 4 };
 
-    @Parameterized.Parameters(name = "Random Size={0}, Tree Order={1}, Node 
dup={2}, Record dup={3}")
-    public static Collection<Object[]> data() {
-        List<Object[]> parameters = new ArrayList<>();
+
+    private static Stream<Arguments> provideArgs() {
+        List<Arguments> list =new ArrayList<>();
         boolean[] modes = new boolean[] { true, false };
         for (int size : RANDOM_SIZES) {
             for (int order : TREE_ORDERS) {
                 for (boolean nodeDup : modes) {
                     for (boolean recordDup : modes) {
-                        parameters.add(new Object[] { size, order, nodeDup, 
recordDup });
+                        list.add(Arguments.of(size, order, nodeDup, 
recordDup));
                     }
                 }
             }
         }
-        return parameters;
+        return list.stream();
     }
 
-    int randomSize, treeOrder;
-    List<Integer> randomData;
-    List<Integer> expectedData;
+    private int randomSize, treeOrder;
+    private List<Integer> randomData;
+    private List<Integer> expectedData;
 
     public TestBPTreeDistinctKeys(int randomSize, int treeOrder, boolean 
nodeMode, boolean recordsMode) {
         super(nodeMode, recordsMode);
@@ -118,18 +124,16 @@ public class TestBPTreeDistinctKeys extends 
TestBPTreeModes {
         return expected;
     }
 
-    @Test(expected = IllegalArgumentException.class)
+    @Test
     public void bptree_distinct_by_key_bad_01() {
         BPlusTree bpt = makeRangeIndex(this.treeOrder, 0);
-        Iterator<Record> iter = bpt.distinctByKeyPrefix(0);
-        assertFalse(iter.hasNext());
+        assertThrows(IllegalArgumentException.class, 
()->bpt.distinctByKeyPrefix(0));
     }
 
-    @Test(expected = IllegalArgumentException.class)
+    @Test
     public void bptree_distinct_by_key_bad_02() {
         BPlusTree bpt = makeRangeIndex(this.treeOrder, 0);
-        Iterator<Record> iter = bpt.distinctByKeyPrefix(6);
-        assertFalse(iter.hasNext());
+        assertThrows(IllegalArgumentException.class, 
()->bpt.distinctByKeyPrefix(6));
     }
 
     @Test
diff --git 
a/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/bplustree/TestBPTreeModes.java
 
b/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/bplustree/TestBPTreeModes.java
index d20ac0e1ac..bc49972534 100644
--- 
a/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/bplustree/TestBPTreeModes.java
+++ 
b/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/bplustree/TestBPTreeModes.java
@@ -18,36 +18,37 @@
 
 package org.apache.jena.dboe.trans.bplustree;
 
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
 
-import java.util.Arrays;
-import java.util.Collection;
+import java.util.List;
+import java.util.stream.Stream;
 
-/** Run the B+Tree algorithm tests but for each combination of explicit
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.params.ParameterizedClass;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+
+/**
+ * Run the B+Tree algorithm tests but for each combination of explicit
  * write-in-place / always copy modes.
  */
-@RunWith(Parameterized.class)
+@ParameterizedClass(name="Node dup={0}, Record dup={1}")
+@MethodSource("provideArgs")
 public class TestBPTreeModes extends TestBPlusTreeNonTxn
 {
-
-    @Parameters(name="Node dup={0}, Record dup={1}")
-    public static Collection<Object[]> data() {
-        return Arrays.asList(new Object[][]{
-            {true, true},
-            {true, false},
-            {false, true},
-            {false, false}
-            });
+    private static Stream<Arguments> provideArgs() {
+        List<Arguments> x = List.of
+                (Arguments.of(true, true),
+                 Arguments.of(true, false),
+                 Arguments.of(false, true),
+                 Arguments.of(false, false));
+        return x.stream();
     }
 
     public TestBPTreeModes(boolean nodeMode, boolean recordsMode) {
-
         BPT.promoteDuplicateNodes = nodeMode;
         BPT.promoteDuplicateRecords = recordsMode;
     }
@@ -55,23 +56,22 @@ public class TestBPTreeModes extends TestBPlusTreeNonTxn
     boolean modeAtStartNodes;
     boolean modeAtStartRecords;
 
-    @BeforeClass public static void setupSuite() {
+    @BeforeAll public static void setupSuite() {
         BPT.forcePromoteModes = true;
     }
 
-    @AfterClass public static void resetSuite() {
+    @AfterAll public static void resetSuite() {
         BPT.forcePromoteModes = false;
     }
 
-    @Before public void setModes() {
+    @BeforeEach public void setModes() {
         BPT.forcePromoteModes = true;
         modeAtStartNodes = BPT.promoteDuplicateNodes;
         modeAtStartRecords = BPT.promoteDuplicateRecords;
     }
 
-    @After public void resetModes() {
+    @AfterEach public void resetModes() {
         BPT.promoteDuplicateNodes = modeAtStartNodes;
         BPT.promoteDuplicateRecords = modeAtStartRecords;
     }
-
 }
diff --git 
a/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/bplustree/TestBPTreeRecordsNonTxn.java
 
b/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/bplustree/TestBPTreeRecordsNonTxn.java
index 8f33959f1f..65774314ab 100644
--- 
a/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/bplustree/TestBPTreeRecordsNonTxn.java
+++ 
b/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/bplustree/TestBPTreeRecordsNonTxn.java
@@ -18,6 +18,13 @@
 
 package org.apache.jena.dboe.trans.bplustree;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertSame;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import org.junit.jupiter.api.*;
+
 import org.apache.jena.dboe.base.block.BlockMgr;
 import org.apache.jena.dboe.base.block.BlockMgrFactory;
 import org.apache.jena.dboe.base.buffer.RecordBuffer;
@@ -28,10 +35,6 @@ import 
org.apache.jena.dboe.base.recordbuffer.RecordBufferPageMgr;
 import org.apache.jena.dboe.sys.SystemIndex;
 import org.apache.jena.dboe.test.RecordLib;
 
-import static org.junit.Assert.*;
-
-import org.junit.*;
-
 public class TestBPTreeRecordsNonTxn {
     static private boolean             oldNullOut;
 
@@ -42,7 +45,7 @@ public class TestBPTreeRecordsNonTxn {
     static private BlockMgr            blkMgrRecords;
     static private RecordBufferPageMgr recordBufferPageMgr;
 
-    @BeforeClass
+    @BeforeAll
     public static void beforeClass() {
         oldNullOut = SystemIndex.getNullOut();
         SystemIndex.setNullOut(true);
@@ -61,18 +64,18 @@ public class TestBPTreeRecordsNonTxn {
         BPT.promoteDuplicateRecords = true;
     }
 
-    @AfterClass
+    @AfterAll
     public static void afterClass() {
         SystemIndex.setNullOut(oldNullOut);
         BPT.forcePromoteModes = false;
     }
 
-    @Before
+    @BeforeEach
     public void before() {
         blkMgrRecords.beginUpdate();
     }
 
-    @After
+    @AfterEach
     public void after() {
         blkMgrRecords.endUpdate();
     }
@@ -210,7 +213,8 @@ public class TestBPTreeRecordsNonTxn {
 
         Record r = bpr1.shiftRight(bpr2, null);
 
-        assertTrue(r + " != " + RecordLib.intToRecord(10), Record.keyEQ(r, 
RecordLib.intToRecord(10)));
+        assertTrue(Record.keyEQ(r, RecordLib.intToRecord(10)),
+                   ()-> r + " != " + RecordLib.intToRecord(10));
         contains(bpr1, 10);
         contains(bpr2, 20, 99);
         bpr1.release();
diff --git 
a/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/bplustree/TestBPlusTreeIndexNonTxn.java
 
b/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/bplustree/TestBPlusTreeIndexNonTxn.java
index 4fe4f2f9bd..aba2cf8c78 100644
--- 
a/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/bplustree/TestBPlusTreeIndexNonTxn.java
+++ 
b/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/bplustree/TestBPlusTreeIndexNonTxn.java
@@ -18,13 +18,14 @@
 
 package org.apache.jena.dboe.trans.bplustree;
 
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+
 import org.apache.jena.atlas.logging.LogCtl;
 import org.apache.jena.dboe.base.block.BlockMgr;
 import org.apache.jena.dboe.index.testlib.AbstractTestIndex;
 import org.apache.jena.dboe.sys.SystemIndex;
 import org.apache.jena.dboe.test.RecordLib;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
 
 /** Run the tests in default settings for a tree in "non-transactional" mode */
 public class TestBPlusTreeIndexNonTxn extends AbstractTestIndex {
@@ -33,14 +34,14 @@ public class TestBPlusTreeIndexNonTxn extends 
AbstractTestIndex {
     static boolean addLogger  = false ;
 
     static boolean originalNullOut;
-    @BeforeClass
+    @BeforeAll
     static public void beforeClass() {
         BPT.CheckingNode = true;
         originalNullOut = SystemIndex.getNullOut();
         SystemIndex.setNullOut(true);
     }
 
-    @AfterClass
+    @AfterAll
     static public void afterClass() {
         SystemIndex.setNullOut(originalNullOut);
     }
diff --git 
a/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/bplustree/TestBPlusTreeNonTxn.java
 
b/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/bplustree/TestBPlusTreeNonTxn.java
index 5890d2e027..24ec17e86d 100644
--- 
a/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/bplustree/TestBPlusTreeNonTxn.java
+++ 
b/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/bplustree/TestBPlusTreeNonTxn.java
@@ -25,14 +25,15 @@ import static org.junit.Assert.assertTrue;
 
 import java.util.List;
 
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+
 import org.apache.jena.atlas.logging.LogCtl;
 import org.apache.jena.dboe.base.block.BlockMgr;
 import org.apache.jena.dboe.base.record.Record;
 import org.apache.jena.dboe.index.testlib.AbstractTestRangeIndex;
 import org.apache.jena.dboe.sys.SystemIndex;
 import org.apache.jena.dboe.test.RecordLib;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
 
 /** Run the tests in default settings for a tree in "non-transactional" mode */
 public class TestBPlusTreeNonTxn extends AbstractTestRangeIndex {
@@ -47,14 +48,14 @@ public class TestBPlusTreeNonTxn extends 
AbstractTestRangeIndex {
     static boolean addLogger  = false ;
 
     static boolean originalNullOut;
-    @BeforeClass
+    @BeforeAll
     static public void beforeClass() {
         BPT.CheckingNode = true;
         originalNullOut = SystemIndex.getNullOut();
         SystemIndex.setNullOut(true);
     }
 
-    @AfterClass
+    @AfterAll
     static public void afterClass() {
         SystemIndex.setNullOut(originalNullOut);
     }
diff --git 
a/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/bplustree/TestBPlusTreeTxn.java
 
b/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/bplustree/TestBPlusTreeTxn.java
index 6ff1988c2d..ea6ade571a 100644
--- 
a/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/bplustree/TestBPlusTreeTxn.java
+++ 
b/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/bplustree/TestBPlusTreeTxn.java
@@ -18,9 +18,11 @@
 
 package org.apache.jena.dboe.trans.bplustree;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import org.apache.jena.dboe.base.file.Location;
 import org.apache.jena.dboe.index.testlib.IndexTestLib;
@@ -56,7 +58,7 @@ public class TestBPlusTreeTxn {
             IndexTestLib.add(bpt, 1, 2, 3, 4);
         } );
         int outerRootIdx2 = bpt.getRootId();
-        assertNotEquals("After txn", outerRootIdx1, outerRootIdx2);
+        assertNotEquals(outerRootIdx1, outerRootIdx2, "After txn");
     }
 
     // Commit - only the first changes the root.
@@ -66,16 +68,16 @@ public class TestBPlusTreeTxn {
         Transactional thing = transactional(bpt);
         Txn.executeWrite(thing, () -> {
             int rootIdx1 = bpt.getRootId();
-            assertEquals("Inside txn (1)", outerRootIdx1, rootIdx1);
+            assertEquals(outerRootIdx1, rootIdx1, "Inside txn (1)");
             IndexTestLib.add(bpt, 1);
             int rootIdx2 = bpt.getRootId();
-            assertNotEquals("Inside txn (2)", rootIdx1, rootIdx2);
+            assertNotEquals(rootIdx1, rootIdx2, "Inside txn (2)");
             IndexTestLib.add(bpt, 2, 3, 4);
             int rootIdx3 = bpt.getRootId();
-            assertEquals("Inside txn (3)", rootIdx2, rootIdx3);
+            assertEquals(rootIdx2, rootIdx3, "Inside txn (3)");
         } );
         int outerRootIdx2 = bpt.getRootId();
-        assertNotEquals("After txn", outerRootIdx1, outerRootIdx2);
+        assertNotEquals(outerRootIdx1, outerRootIdx2, "After txn");
     }
 
     // Abort
@@ -88,7 +90,7 @@ public class TestBPlusTreeTxn {
         thing.abort();
         thing.end();
         int outerRootIdx2 = bpt.getRootId();
-        assertEquals("After txn", outerRootIdx1, outerRootIdx2);
+        assertEquals(outerRootIdx1, outerRootIdx2, "After txn");
     }
 
     // Two transactions
@@ -100,13 +102,13 @@ public class TestBPlusTreeTxn {
             IndexTestLib.add(bpt, 1, 2, 3, 4);
         } );
         int outerRootIdx2 = bpt.getRootId();
-        assertNotEquals("After txn(1)", outerRootIdx1, outerRootIdx2);
+        assertNotEquals(outerRootIdx1, outerRootIdx2, "After txn(1)");
         Txn.executeWrite(thing, () -> {
             IndexTestLib.add(bpt, 5, 6);
         } );
         int outerRootIdx3 = bpt.getRootId();
-        assertNotEquals("After txn (2)", outerRootIdx1, outerRootIdx3);
-        assertNotEquals("After txn (3)", outerRootIdx2, outerRootIdx3);
+        assertNotEquals(outerRootIdx1, outerRootIdx3, "After txn (2)");
+        assertNotEquals(outerRootIdx2, outerRootIdx3, "After txn (3)");
     }
 
     // Two transactions, second an insert no-op.
@@ -120,13 +122,13 @@ public class TestBPlusTreeTxn {
             IndexTestLib.add(bpt, 1, 2, 3);
         } );
         int outerRootIdx2 = bpt.getRootId();
-        assertNotEquals("After txn(1)", outerRootIdx1, outerRootIdx2);
+        assertNotEquals(outerRootIdx1, outerRootIdx2, "After txn(1)");
         Txn.executeWrite(thing, () -> {
             IndexTestLib.add(bpt, 1, 2);
         } );
         int outerRootIdx3 = bpt.getRootId();
-        assertNotEquals("After txn (2)", outerRootIdx1, outerRootIdx3);
-        assertEquals("After txn (3)", outerRootIdx2, outerRootIdx3);
+        assertNotEquals(outerRootIdx1, outerRootIdx3, "After txn (2)");
+        assertEquals(outerRootIdx2, outerRootIdx3, "After txn (3)");
     }
 
     // Two transactions, second a delete no-op.
@@ -139,13 +141,13 @@ public class TestBPlusTreeTxn {
             IndexTestLib.add(bpt, 1, 2, 3);
         } );
         int outerRootIdx2 = bpt.getRootId();
-        assertNotEquals("After txn(1)", outerRootIdx1, outerRootIdx2);
+        assertNotEquals(outerRootIdx1, outerRootIdx2, "After txn(1)");
         Txn.executeWrite(thing, () -> {
             IndexTestLib.delete(bpt, 5, 6);
         } );
         int outerRootIdx3 = bpt.getRootId();
-        assertNotEquals("After txn (2)", outerRootIdx1, outerRootIdx3);
-        assertEquals("After txn (3)", outerRootIdx2, outerRootIdx3);
+        assertNotEquals(outerRootIdx1, outerRootIdx3, "After txn (2)");
+        assertEquals(outerRootIdx2, outerRootIdx3, "After txn (3)");
     }
 
     // Two trees
diff --git 
a/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/bplustree/rewriter/TestBPlusTreeRewriterNonTxn.java
 
b/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/bplustree/rewriter/TestBPlusTreeRewriterNonTxn.java
index 8679db152f..0e45b8792e 100644
--- 
a/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/bplustree/rewriter/TestBPlusTreeRewriterNonTxn.java
+++ 
b/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/bplustree/rewriter/TestBPlusTreeRewriterNonTxn.java
@@ -22,9 +22,9 @@ import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
 
 import org.apache.jena.atlas.lib.Bytes;
 import org.apache.jena.dboe.base.block.BlockMgr;
@@ -48,8 +48,8 @@ public class TestBPlusTreeRewriterNonTxn {
 
     // The BPlusTreeRewriter works directly on storage.
     static boolean b;
-    @BeforeClass public static void beforeClass()   { b = 
BlockMgrFactory.AddTracker; BlockMgrFactory.AddTracker = false ; }
-    @AfterClass  public static void afterClass()    { 
BlockMgrFactory.AddTracker = b ;}
+    @BeforeAll public static void beforeClass()   { b = 
BlockMgrFactory.AddTracker; BlockMgrFactory.AddTracker = false ; }
+    @AfterAll  public static void afterClass()    { BlockMgrFactory.AddTracker 
= b ;}
 
     @Test public void bpt_rewrite_01()  { runTest(2, 0); }
     @Test public void bpt_rewrite_02()  { runTest(3, 0); }
diff --git 
a/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/data/TS_TransactionalData.java
 
b/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/data/TS_TransactionalData.java
index 50df5b36d2..cec35f2c16 100644
--- 
a/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/data/TS_TransactionalData.java
+++ 
b/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/data/TS_TransactionalData.java
@@ -18,12 +18,11 @@
 
 package org.apache.jena.dboe.trans.data;
 
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-import org.junit.runners.Suite.SuiteClasses;
+import org.junit.platform.suite.api.SelectClasses;
+import org.junit.platform.suite.api.Suite;
 
-@RunWith(Suite.class)
-@SuiteClasses( {
+@Suite
+@SelectClasses({
     TestTxnIndexMem.class
     , TestTxnBlob.class
     , TestTxnBlobPersistent.class
diff --git 
a/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/data/TestTxnBinaryDataFile.java
 
b/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/data/TestTxnBinaryDataFile.java
index e19a96bd20..381a4652fc 100644
--- 
a/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/data/TestTxnBinaryDataFile.java
+++ 
b/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/data/TestTxnBinaryDataFile.java
@@ -22,18 +22,19 @@ import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotEquals;
 
+import org.junit.Test;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+
 import org.apache.jena.atlas.lib.Bytes;
 import org.apache.jena.atlas.lib.StrUtils;
 import org.apache.jena.dboe.base.file.*;
-import org.apache.jena.system.Txn;
 import org.apache.jena.dboe.transaction.Transactional;
 import org.apache.jena.dboe.transaction.TransactionalFactory;
 import org.apache.jena.dboe.transaction.txn.ComponentId;
 import org.apache.jena.dboe.transaction.txn.journal.Journal;
 import org.apache.jena.system.ThreadTxn;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
+import org.apache.jena.system.Txn;
 
 public class TestTxnBinaryDataFile {
     private Journal journal;
@@ -41,7 +42,7 @@ public class TestTxnBinaryDataFile {
     private TransBinaryDataFile transBinData;
     private Transactional transactional;
 
-    @Before public void before() {
+    @BeforeEach public void before() {
         journal = Journal.create(Location.mem());
         baseBinData = new BinaryDataFileMem();
         BufferChannel chan = FileFactory.createBufferChannelMem();
@@ -51,7 +52,7 @@ public class TestTxnBinaryDataFile {
         transactional = TransactionalFactory.createTransactional(journal, 
transBinData);
     }
 
-    @After public void after() { }
+    @AfterEach public void after() { }
 
 //    private static ByteBuffer str2bb(String x) {
 //        byte[] d = StrUtils.asUTF8bytes(x);
diff --git 
a/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/data/TestTxnBlob.java
 
b/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/data/TestTxnBlob.java
index 6cfa4f7a5a..520c2a2566 100644
--- 
a/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/data/TestTxnBlob.java
+++ 
b/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/data/TestTxnBlob.java
@@ -19,13 +19,13 @@
 package org.apache.jena.dboe.trans.data;
 
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
 
 import java.util.concurrent.atomic.AtomicReference;
 
-import org.junit.After;
-import org.junit.Before;
 import org.junit.Test;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
 
 import org.apache.jena.dboe.base.file.BufferChannel;
 import org.apache.jena.dboe.base.file.BufferChannelMem;
@@ -44,7 +44,7 @@ public class TestTxnBlob {
     private TransBlob       transBlob;
     private Transactional   transactional;
 
-    @Before public void before() {
+    @BeforeEach public void before() {
         journal = Journal.create(Location.mem());
 
         BufferChannel chan = BufferChannelMem.create("TestTransBlob");
@@ -53,7 +53,7 @@ public class TestTxnBlob {
         transactional = TransactionalFactory.createTransactional(journal, 
transBlob);
     }
 
-    @After public void after() { }
+    @AfterEach public void after() { }
 
     public static void write(Transactional transactional, TransBlob transBlob, 
String data) {
         Txn.executeWrite(transactional, ()->{
diff --git 
a/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/data/TestTxnBlobPersistent.java
 
b/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/data/TestTxnBlobPersistent.java
index bc617af587..57a283b087 100644
--- 
a/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/data/TestTxnBlobPersistent.java
+++ 
b/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/data/TestTxnBlobPersistent.java
@@ -18,37 +18,39 @@
 
 package org.apache.jena.dboe.trans.data;
 
-import org.apache.jena.util.FileUtils;
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
 
 import org.apache.jena.atlas.lib.FileOps;
 import org.apache.jena.dboe.base.file.BufferChannel;
 import org.apache.jena.dboe.base.file.BufferChannelFile;
 import org.apache.jena.dboe.base.file.Location;
-import org.apache.jena.system.Txn;
 import org.apache.jena.dboe.transaction.Transactional;
 import org.apache.jena.dboe.transaction.TransactionalFactory;
 import org.apache.jena.dboe.transaction.txn.ComponentId;
 import org.apache.jena.dboe.transaction.txn.journal.Journal;
-
-import static org.junit.Assert.*;
-
-import org.junit.*;
+import org.apache.jena.system.Txn;
+import org.apache.jena.util.FileUtils;
 
 public class TestTxnBlobPersistent {
     private final static String DIR  = "target/blobtest";
     private final static String JRNL = DIR+"/journal.jrnl";
     private final static String DATA = DIR+"/blob.data";
 
-    @BeforeClass public static void beforeClass() {
+    @BeforeAll public static void beforeClass() {
         FileOps.ensureDir(DIR);
     }
 
-    @Before public void before() {
+    @BeforeEach public void before() {
         FileOps.deleteSilent(JRNL);
         FileOps.deleteSilent(DATA);
     }
 
-    @AfterClass public static void afterClass() {
+    @AfterAll public static void afterClass() {
         FileOps.deleteSilent(JRNL);
         FileOps.deleteSilent(DATA);
     }
diff --git 
a/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/recovery/TestRecovery.java
 
b/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/recovery/TestRecovery.java
index dbe4e105f6..27de31b25a 100644
--- 
a/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/recovery/TestRecovery.java
+++ 
b/jena-db/jena-dboe-trans-data/src/test/java/org/apache/jena/dboe/trans/recovery/TestRecovery.java
@@ -18,13 +18,21 @@
 
 package org.apache.jena.dboe.trans.recovery;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
 
 import java.nio.ByteBuffer;
 import java.util.Arrays;
 
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.rules.TemporaryFolder;
+
 import org.apache.jena.atlas.io.IO;
 import org.apache.jena.atlas.lib.FileOps;
 import org.apache.jena.atlas.logging.LogCtl;
@@ -38,8 +46,6 @@ import 
org.apache.jena.dboe.transaction.txn.TransactionCoordinator;
 import org.apache.jena.dboe.transaction.txn.journal.Journal;
 import org.apache.jena.dboe.transaction.txn.journal.JournalEntry;
 import org.apache.jena.dboe.transaction.txn.journal.JournalEntryType;
-import org.junit.*;
-import org.junit.rules.TemporaryFolder;
 
 // We need something to recover io order to test recovery.
 
@@ -54,15 +60,15 @@ public class TestRecovery {
     private String data2;
     private static String loggerLevel;
 
-    @BeforeClass public static void beforeClass() {
+    @BeforeAll public static void beforeClass() {
         loggerLevel = LogCtl.getLevel(SysDB.syslog);
         LogCtl.setLevel(SysDB.syslog, "WARNING");
     }
-    @AfterClass public static void afterClass() {
+    @AfterAll public static void afterClass() {
         LogCtl.setLevel(SysDB.syslog, loggerLevel);
     }
 
-    @Before public void before() {
+    @BeforeEach public void before() {
         journal  = dir.getRoot().getAbsolutePath() + "/journal.jrnl";
         data  = dir.getRoot().getAbsolutePath() + "/blob.data";
         data1 = dir.getRoot().getAbsolutePath() + "/blob.data-1";
@@ -74,7 +80,7 @@ public class TestRecovery {
         FileOps.deleteSilent(data2);
     }
 
-    @After public void after() {
+    @AfterEach public void after() {
         FileOps.deleteSilent(journal);
         FileOps.deleteSilent(data);
     }
diff --git 
a/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/AbstractTestTxn.java
 
b/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/AbstractTestTxn.java
index c8c1f87982..c4de239541 100644
--- 
a/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/AbstractTestTxn.java
+++ 
b/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/AbstractTestTxn.java
@@ -18,16 +18,17 @@
 
 package org.apache.jena.dboe.transaction;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import java.util.Arrays;
 import java.util.List;
 
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+
 import org.apache.jena.dboe.base.file.Location;
 import org.apache.jena.dboe.transaction.txn.*;
 import org.apache.jena.dboe.transaction.txn.journal.Journal;
-import org.junit.After;
-import org.junit.Before;
 
 public abstract class AbstractTestTxn {
     protected TransactionCoordinator txnMgr;
@@ -36,7 +37,7 @@ public abstract class AbstractTestTxn {
     protected TransMonitor monitor  = new 
TransMonitor(ComponentId.allocLocal());
     protected Transactional unit;
 
-    @Before public void setup() {
+    @BeforeEach public void setup() {
         Journal jrnl = Journal.create(Location.mem());
         List<TransactionalComponent> cg = Arrays.asList
             (counter1, new TransactionalComponentWrapper(counter2), monitor);
@@ -45,7 +46,7 @@ public abstract class AbstractTestTxn {
         txnMgr.start();
     }
 
-    @After public void clearup() {
+    @AfterEach public void clearup() {
         // Some test that expect exceptions leave active transactions around.
         txnMgr.shutdown(true);
     }
diff --git 
a/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TS_Transactions.java
 
b/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TS_Transactions.java
index 769530eeaa..a01a25727a 100644
--- 
a/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TS_Transactions.java
+++ 
b/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TS_Transactions.java
@@ -18,12 +18,11 @@
 
 package org.apache.jena.dboe.transaction;
 
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-import org.junit.runners.Suite.SuiteClasses;
+import org.junit.platform.suite.api.SelectClasses;
+import org.junit.platform.suite.api.Suite;
 
-@RunWith(Suite.class)
-@SuiteClasses( {
+@Suite
+@SelectClasses({
     TestTxnId.class
     , TestJournal.class
     , TestStateMgrData.class
diff --git 
a/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestJournal.java
 
b/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestJournal.java
index d69eb3ccbe..2ffb37cd11 100644
--- 
a/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestJournal.java
+++ 
b/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestJournal.java
@@ -18,18 +18,15 @@
 
 package org.apache.jena.dboe.transaction;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.*;
 
 import java.nio.ByteBuffer;
 import java.util.Arrays;
 import java.util.Iterator;
 import java.util.List;
 
+import org.junit.jupiter.api.Test;
+
 import org.apache.jena.atlas.lib.ByteBufferLib;
 import org.apache.jena.dboe.base.file.Location;
 import org.apache.jena.dboe.transaction.txn.ComponentId;
@@ -37,7 +34,6 @@ import org.apache.jena.dboe.transaction.txn.ComponentIds;
 import org.apache.jena.dboe.transaction.txn.journal.Journal;
 import org.apache.jena.dboe.transaction.txn.journal.JournalEntry;
 import org.apache.jena.dboe.transaction.txn.journal.JournalEntryType;
-import org.junit.Test;
 
 /** Journal tests spearate from the transaction coordinator */
 public class TestJournal {
diff --git 
a/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestStateMgrData.java
 
b/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestStateMgrData.java
index 788fe0a2c8..108977e9f9 100644
--- 
a/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestStateMgrData.java
+++ 
b/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestStateMgrData.java
@@ -17,14 +17,16 @@
  */
 
 package org.apache.jena.dboe.transaction;
-import static org.junit.Assert.*;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import java.nio.ByteBuffer;
 
+import org.junit.jupiter.api.Test;
+
 import org.apache.jena.dboe.base.file.BufferChannel;
 import org.apache.jena.dboe.base.file.FileFactory;
 import org.apache.jena.dboe.transaction.txn.StateMgrDataIdx;
-import org.junit.Test;
 
 public class TestStateMgrData {
 
diff --git 
a/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestThreadingTransactions.java
 
b/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestThreadingTransactions.java
index 12c2aaba39..3e97ba77c2 100644
--- 
a/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestThreadingTransactions.java
+++ 
b/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestThreadingTransactions.java
@@ -18,13 +18,13 @@
 
 package org.apache.jena.dboe.transaction;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import java.util.concurrent.Semaphore;
 
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import org.apache.jena.dboe.base.file.Location;
 import org.apache.jena.dboe.transaction.txn.TransactionCoordinator;
@@ -37,13 +37,13 @@ public class TestThreadingTransactions {
     static final long InitValue = 3;
     private TransactionalInteger transInt;
 
-    @Before public void init() {
+    @BeforeEach public void init() {
         TransactionCoordinator coord = 
TransactionCoordinator.create(Location.mem());
         transInt = new TransactionalInteger(coord, InitValue);
         coord.start();
     }
 
-    @After public void after() {
+    @AfterEach public void after() {
         transInt.getTxnMgr().shutdown(true);
     }
 
@@ -56,7 +56,7 @@ public class TestThreadingTransactions {
 
     void read(String label, TransactionalInteger trans, long expected) {
         long x = trans.get();
-        assertEquals(label, expected, x);
+        assertEquals(expected, x, ()->label);
     }
 
     ThreadAction threadRead(String label, TransactionalInteger trans, long 
expectedValue) {
diff --git 
a/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestTransactionCoordinator.java
 
b/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestTransactionCoordinator.java
index 114eaa5c1c..d005e4e3a9 100644
--- 
a/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestTransactionCoordinator.java
+++ 
b/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestTransactionCoordinator.java
@@ -18,10 +18,11 @@
 
 package org.apache.jena.dboe.transaction;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import org.junit.jupiter.api.Test;
 
 import org.apache.jena.query.ReadWrite;
-import org.junit.Test;
 
 public class TestTransactionCoordinator extends AbstractTestTxn {
     @Test public void txn_coord_read_1() {
diff --git 
a/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestTransactionCoordinatorControl.java
 
b/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestTransactionCoordinatorControl.java
index 3fb4a747c5..0edba8ffc9 100644
--- 
a/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestTransactionCoordinatorControl.java
+++ 
b/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestTransactionCoordinatorControl.java
@@ -18,11 +18,15 @@
 
 package org.apache.jena.dboe.transaction;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
 import java.util.concurrent.Semaphore;
 import java.util.concurrent.atomic.AtomicInteger;
 
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
 import org.apache.jena.atlas.lib.ThreadLib;
 import org.apache.jena.dboe.base.file.Location;
 import org.apache.jena.dboe.transaction.txn.Transaction;
@@ -33,53 +37,56 @@ import org.apache.jena.query.TxnType;
 import org.apache.jena.system.ThreadAction;
 import org.apache.jena.system.ThreadTxn;
 import org.apache.jena.system.Txn;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
 
 public class TestTransactionCoordinatorControl {
     // The problem with these tests is the need for Lib.sleep as a way to 
ensure
-    // async threads run if they can.  And we are sometimes testing for "they 
can't".
+    // async threads run if they can. And we are sometimes testing for "they 
can't".
 
     static final long InitValue = 3;
     private TransactionCoordinator txnMgr;
     protected Transactional unit;
 
-    @Before public void init() {
+    @BeforeEach
+    public void init() {
         txnMgr = TransactionCoordinator.create(Location.mem());
         unit = new TransactionalBase(txnMgr);
         txnMgr.start();
     }
 
-    @After public void after() {
+    @AfterEach
+    public void after() {
         txnMgr.shutdown();
     }
 
-    @Test public void txn_coord_disable_writers_1() {
+    @Test
+    public void txn_coord_disable_writers_1() {
         AtomicInteger counter1 = new AtomicInteger(0);
         AtomicInteger counter2 = new AtomicInteger(0);
 
         txnMgr.blockWriters();
-        ThreadAction threadTxn1 = ThreadTxn.threadTxnRead(unit, 
()->counter1.incrementAndGet());
+        ThreadAction threadTxn1 = ThreadTxn.threadTxnRead(unit, () -> 
counter1.incrementAndGet());
         threadTxn1.run();
         assertEquals(1, counter1.get());
     }
 
-    @Test public void txn_coord_disable_writers_2() {
+    @Test
+    public void txn_coord_disable_writers_2() {
         txnMgr.blockWriters();
-        Transaction txn = 
ThreadLib.syncCallThread(()->txnMgr.begin(TxnType.WRITE, false));
+        Transaction txn = ThreadLib.syncCallThread(() -> 
txnMgr.begin(TxnType.WRITE, false));
         assertNull(txn);
         txnMgr.enableWriters();
-        Transaction txn2 = ThreadLib.syncCallThread(()-> {
+        Transaction txn2 = ThreadLib.syncCallThread(() -> {
             Transaction txn1 = txnMgr.begin(TxnType.WRITE, false);
             assertNotNull(txn1);
-            txn1.abort(); txn1.end();
+            txn1.abort();
+            txn1.end();
             return txn1;
         });
         assertNotNull(txn2);
     }
 
-    @Test public void txn_coord_disable_writers_3() {
+    @Test
+    public void txn_coord_disable_writers_3() {
         txnMgr.blockWriters();
         Transaction txn = ThreadLib.syncCallThread(() -> {
             Transaction tx = txnMgr.begin(TxnType.READ, false);
@@ -103,11 +110,11 @@ public class TestTransactionCoordinatorControl {
         assertNotNull(txn2);
     }
 
-    @Test(expected=TransactionException.class)
+    @Test
     public void txn_coord_disable_writers_4() {
         txnMgr.blockWriters();
         txnMgr.enableWriters();
-        txnMgr.enableWriters();
+        assertThrows(TransactionException.class, ()->txnMgr.enableWriters());
     }
 
     @Test
@@ -118,9 +125,10 @@ public class TestTransactionCoordinatorControl {
         txnMgr.enableWriters();
     }
 
-    @Test public void txn_coord_exclusive_1() {
+    @Test
+    public void txn_coord_exclusive_1() {
         txnMgr.startExclusiveMode();
-        ThreadLib.syncOtherThread(()->{
+        ThreadLib.syncOtherThread(() -> {
             Transaction txn1 = txnMgr.begin(TxnType.WRITE, false);
             assertNull(txn1);
             Transaction txn2 = txnMgr.begin(TxnType.READ, false);
@@ -128,20 +136,23 @@ public class TestTransactionCoordinatorControl {
         });
 
         txnMgr.finishExclusiveMode();
-        ThreadLib.syncOtherThread(()->{
+        ThreadLib.syncOtherThread(() -> {
             Transaction txn1 = txnMgr.begin(TxnType.WRITE, false);
             assertNotNull(txn1);
             Transaction txn2 = txnMgr.begin(TxnType.READ, false);
             assertNotNull(txn2);
-            txn1.commit(); txn1.end();
-            txn2.commit(); txn2.end();
+            txn1.commit();
+            txn1.end();
+            txn2.commit();
+            txn2.end();
         });
     }
 
-    @Test public void txn_coord_exclusive_2() {
+    @Test
+    public void txn_coord_exclusive_2() {
         AtomicInteger counter1 = new AtomicInteger(0);
         Semaphore finalSema = new Semaphore(0);
-        ThreadAction ttxn = ThreadTxn.threadTxnWrite(unit, ()->{
+        ThreadAction ttxn = ThreadTxn.threadTxnWrite(unit, () -> {
             counter1.incrementAndGet();
         });
         boolean b = txnMgr.tryExclusiveMode(false);
@@ -149,7 +160,7 @@ public class TestTransactionCoordinatorControl {
         assertEquals(0, counter1.get());
         ttxn.run(); // Now run thread
         assertEquals(1, counter1.get());
-        Txn.executeWrite(unit, ()->{});
+        Txn.executeWrite(unit, () -> {});
         b = txnMgr.tryExclusiveMode(false);
         assertTrue(b);
     }
@@ -160,31 +171,31 @@ public class TestTransactionCoordinatorControl {
         // And again in after().
     }
 
-    @Test(expected=TransactionException.class)
+    // TransactionException.class
+
+    @Test
     public void txn_coord_shutdown_2() {
         Transaction txn = txnMgr.begin(TxnType.READ);
         txnMgr.shutdown(true);
-        txn.commit();
+        assertThrows(TransactionException.class, ()->txn.commit());
     }
 
-    @Test(expected=TransactionException.class)
+    @Test
     public void txn_coord_shutdown_3() {
         Transaction txn = txnMgr.begin(TxnType.WRITE);
         txnMgr.shutdown(true);
-        txn.commit();
+        assertThrows(TransactionException.class, ()->txn.commit());
     }
 
-    @Test(expected=TransactionException.class)
+    @Test
     public void txn_coord_shutdown_4() {
         txnMgr.shutdown(true);
-        txnMgr.begin(TxnType.READ);
+        assertThrows(TransactionException.class, 
()->txnMgr.begin(TxnType.READ));
     }
 
-
-    @Test(expected=TransactionException.class)
+    @Test
     public void txn_coord_shutdown_5() {
         txnMgr.shutdown(true);
-        txnMgr.begin(TxnType.READ);
+        assertThrows(TransactionException.class, 
()->txnMgr.begin(TxnType.READ));
     }
 }
-
diff --git 
a/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestTransactionLifecycle.java
 
b/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestTransactionLifecycle.java
index f5fc5eb6be..e7d9da8718 100644
--- 
a/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestTransactionLifecycle.java
+++ 
b/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestTransactionLifecycle.java
@@ -18,8 +18,13 @@
 
 package org.apache.jena.dboe.transaction;
 
-import static org.junit.Assert.*;
-import org.junit.Test;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
+
+import org.junit.jupiter.api.Test;
+
 import org.apache.jena.dboe.transaction.txn.TransactionException;
 import org.apache.jena.query.ReadWrite;
 import org.apache.jena.query.TxnType;
@@ -112,34 +117,34 @@ public class TestTransactionLifecycle extends 
AbstractTestTxn {
         checkClear();
     }
 
-    @Test(expected=TransactionException.class)
+    @Test
     public void txn_begin_read_begin_read() {
         unit.begin(TxnType.READ);
-        unit.begin(TxnType.READ);
+        assertThrows(TransactionException.class, ()->unit.begin(TxnType.READ));
     }
 
-    @Test(expected=TransactionException.class)
+    @Test
     public void txn_begin_read_begin_write() {
         unit.begin(TxnType.READ);
-        unit.begin(TxnType.WRITE);
+        assertThrows(TransactionException.class, 
()->unit.begin(TxnType.WRITE));
     }
 
-    @Test(expected=TransactionException.class)
+    @Test
     public void txn_begin_write_begin_read() {
         unit.begin(TxnType.WRITE);
-        unit.begin(TxnType.READ);
+        assertThrows(TransactionException.class, ()->unit.begin(TxnType.READ));
     }
 
-    @Test(expected=TransactionException.class)
+    @Test
     public void txn_begin_write_begin_write() {
         unit.begin(TxnType.WRITE);
-        unit.begin(TxnType.WRITE);
+        assertThrows(TransactionException.class, 
()->unit.begin(TxnType.WRITE));
     }
 
-    @Test(expected=TransactionException.class)
+    @Test
     public void txn_write_begin_end() {
         unit.begin(TxnType.WRITE);
-        unit.end();
+        assertThrows(TransactionException.class, ()->unit.end());
         checkClear();
     }
 
diff --git 
a/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestTransactionLifecycle2.java
 
b/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestTransactionLifecycle2.java
index 736a2da7b3..c3e47efbe1 100644
--- 
a/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestTransactionLifecycle2.java
+++ 
b/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestTransactionLifecycle2.java
@@ -18,10 +18,14 @@
 
 package org.apache.jena.dboe.transaction;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
 import java.util.concurrent.atomic.AtomicReference;
 
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
 import org.apache.jena.atlas.lib.ThreadLib;
 import org.apache.jena.dboe.base.file.Location;
 import org.apache.jena.dboe.transaction.txn.Transaction;
@@ -30,9 +34,6 @@ import 
org.apache.jena.dboe.transaction.txn.TransactionException;
 import org.apache.jena.dboe.transaction.txn.journal.Journal;
 import org.apache.jena.query.ReadWrite;
 import org.apache.jena.query.TxnType;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
 
 /**
  * Details tests of the transaction lifecycle in one JVM
@@ -43,13 +44,13 @@ public class TestTransactionLifecycle2 {
     // org.junit.rules.ExternalResource ?
     protected TransactionCoordinator txnMgr;
 
-    @Before public void setup() {
+    @BeforeEach public void setup() {
         Journal jrnl = Journal.create(Location.mem());
         txnMgr = new TransactionCoordinator(jrnl);
         txnMgr.start();
     }
 
-    @After public void clearup() {
+    @AfterEach public void clearup() {
         txnMgr.shutdown();
     }
 
@@ -64,10 +65,10 @@ public class TestTransactionLifecycle2 {
         checkClear();
     }
 
-    @Test(expected=TransactionException.class)
+    @Test
     public void txn_direct_02() {
         Transaction txn1 = txnMgr.begin(TxnType.WRITE);
-        txn1.end();
+        assertThrows(TransactionException.class, ()->txn1.end());
         checkClear();
     }
 
@@ -203,11 +204,11 @@ public class TestTransactionLifecycle2 {
         checkClear();
     }
 
-    @Test(expected=TransactionException.class)
+    @Test
     public void txn_promote_4() {
         Transaction txn1 = txnMgr.begin(TxnType.READ);
         txn1.end();
-        txn1.promote();
+        assertThrows(TransactionException.class, ()->txn1.promote());
     }
 
     //Not a @Test
diff --git 
a/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestTxnId.java
 
b/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestTxnId.java
index e9460d70ff..83a489e24c 100644
--- 
a/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestTxnId.java
+++ 
b/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestTxnId.java
@@ -18,15 +18,16 @@
 
 package org.apache.jena.dboe.transaction;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNotSame;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNotSame;
+
+import org.junit.jupiter.api.Test;
 
 import org.apache.jena.dboe.transaction.txn.TxnId;
 import org.apache.jena.dboe.transaction.txn.TxnIdFactory;
 import org.apache.jena.dboe.transaction.txn.TxnIdSimple;
-import org.junit.Test;
 
 public class TestTxnId {
     @Test public void txnId_1() {
diff --git 
a/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestTxnLib.java
 
b/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestTxnLib.java
index e9fb882bec..e02744c8ac 100644
--- 
a/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestTxnLib.java
+++ 
b/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestTxnLib.java
@@ -18,15 +18,18 @@
 
 package org.apache.jena.dboe.transaction;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.fail;
 
-import org.apache.jena.system.ThreadTxn;
+import org.junit.jupiter.api.Test;
+
+import org.apache.jena.query.ReadWrite;
 import org.apache.jena.system.ThreadAction;
+import org.apache.jena.system.ThreadTxn;
 import org.apache.jena.system.Txn;
-import org.apache.jena.query.ReadWrite;
-import org.junit.Test;
+import org.opentest4j.AssertionFailedError;
 
 /** Txn with DBOE transactions */
 public class TestTxnLib extends AbstractTestTxn {
@@ -48,37 +51,37 @@ public class TestTxnLib extends AbstractTestTxn {
 
         Txn.executeWrite(unit, () -> {
             counter1.inc();
-            assertEquals("In W, value()", 0, counter1.value());
-            assertEquals("In W, get()",1, counter1.get());
+            assertEquals(0, counter1.value(), "In W, value()");
+            assertEquals(1,counter1.get(), "In W, get()");
         });
 
-        assertEquals("Direct value()", 1, counter1.value());
-        assertEquals("Direct get()", 1, counter1.get());
+        assertEquals(1, counter1.value(), "Direct value()");
+        assertEquals(1, counter1.get(), "Direct get()");
 
         Txn.executeRead(unit, () -> {
-            assertEquals("In R, value()", 1, counter1.get());
-            assertEquals("In R, get()", 1, counter1.value());
+            assertEquals(1, counter1.get(), "In R, value()");
+            assertEquals(1, counter1.value(), "In R, get()");
         });
     }
 
     @Test public void libTxn_3() {
         Txn.executeRead(unit, () -> {
-            assertEquals("In R, value()", 0, counter2.get());
-            assertEquals("In R, get()", 0, counter2.value());
+            assertEquals(0, counter2.get(), "In R, value()");
+            assertEquals(0, counter2.value(), "In R, get()");
         });
 
         Txn.executeWrite(unit, () -> {
             counter2.inc();
-            assertEquals("In W, value()", 0, counter2.value());
-            assertEquals("In W, get()",1, counter2.get());
+            assertEquals(0, counter2.value(), "In W, value()");
+            assertEquals(1,counter2.get(), "In W, get()");
         });
 
-        assertEquals("Direct value()", 1, counter2.value());
-        assertEquals("Direct get()", 1, counter2.get());
+        assertEquals(1, counter2.value(), "Direct value()");
+        assertEquals(1, counter2.get(), "Direct get()");
 
         Txn.executeRead(unit, () -> {
-            assertEquals("In R, value()", 1, counter2.get());
-            assertEquals("In R, get()", 1, counter2.value());
+            assertEquals(1, counter2.get(), "In R, value()");
+            assertEquals(1, counter2.value(), "In R, get()");
         });
     }
 
@@ -93,42 +96,42 @@ public class TestTxnLib extends AbstractTestTxn {
         unit.begin(ReadWrite.WRITE);
             counter1.inc();
             counter2.inc();
-            assertEquals("Counter out of step", counter1.get(), 
counter2.get());
-            assertNotEquals("Counter 1 can see wrong state", counter1.get(), 
counter1.value() );
-            assertNotEquals("Counter 2 can see wrong state", counter2.get(), 
counter2.value() );
+            assertEquals(counter1.get(), counter2.get(), "Counter out of 
step");
+            assertNotEquals(counter1.get(), counter1.value(), "Counter 1 can 
see wrong state" );
+            assertNotEquals(counter2.get(), counter2.value(), "Counter 2 can 
see wrong state" );
             counter2.inc();
-            assertNotEquals("Counter 1 and 2 should differ", counter1.get(), 
counter2.get() );
+            assertNotEquals(counter1.get(), counter2.get(), "Counter 1 and 2 
should differ" );
         unit.commit();
         unit.end();
         //});
-        assertEquals("Component 1 inconsistent", 1, counter1.value());
-        assertEquals("Component 2 inconsistent", 2, counter2.value());
+        assertEquals(1, counter1.value(), "Component 1 inconsistent");
+        assertEquals(2, counter2.value(), "Component 2 inconsistent");
 
         Txn.executeRead(unit, () -> {
-            assertEquals("Component 1 inconsistent (R)", 1, counter1.get());
-            assertEquals("Component 2 inconsistent (R)", 2, counter2.get());
+            assertEquals(1, counter1.get(), "Component 1 inconsistent (R)");
+            assertEquals(2, counter2.get(), "Component 2 inconsistent (R)");
         });
     }
 
     @Test public void libTxn_5() {
         long x =
             Txn.calculateRead(unit, () -> {
-                assertEquals("In R, value()", 0, counter2.get());
-                assertEquals("In R, get()", 0, counter2.value());
+                assertEquals(0, counter2.get(), "In R, value()");
+                assertEquals(0, counter2.value(), "In R, get()");
                 return counter2.get();
             });
-        assertEquals("Outside R", 0, x);
+        assertEquals(0, x, "Outside R");
     }
 
     @Test public void libTxn_6() {
         long x =
             Txn.calculateWrite(unit, () -> {
                 counter2.inc();
-                assertEquals("In W, value()", 0, counter2.value());
-                assertEquals("In W, get()",1, counter2.get());
+                assertEquals(0, counter2.value(), "In W, value()");
+                assertEquals(1,counter2.get(), "In W, get()");
                 return counter2.get();
             });
-        assertEquals("Outside W",1, x);
+        assertEquals(1,x, "Outside W");
     }
 
     @Test public void libTxn_7() {
@@ -141,7 +144,7 @@ public class TestTxnLib extends AbstractTestTxn {
         long x2 = Txn.calculateRead(unit, () -> {
             return counter2.get();
         });
-        assertEquals("After W and R",x1 , x2);
+        assertEquals(x1,x2 , "After W and R");
     }
 
     // Tests for thread transactions.
@@ -155,20 +158,20 @@ public class TestTxnLib extends AbstractTestTxn {
         ThreadAction t = ThreadTxn.threadTxnWrite(unit, ()-> fail(""));
     }
 
-    @Test(expected=AssertionError.class)
+    @Test
     public void libTxnThread_3() {
         ThreadAction t = ThreadTxn.threadTxnWrite(unit, ()-> fail(""));
-        t.run();
+        assertThrows(AssertionFailedError.class, ()->t.run());
     }
 
     @Test public void libTxnThread_10() {
         long x1 = counter1.get();
         ThreadAction t = ThreadTxn.threadTxnWrite(unit, ()->{ 
counter1.inc();}) ;
         long x2 = counter1.get();
-        assertEquals("x2", x1, x2);
+        assertEquals(x1, x2, "x2");
         t.run();
         long x3 = counter1.get();
-        assertEquals("x3", x1+1, x3);
+        assertEquals(x1+1, x3, "x3");
     }
 
     @Test public void libTxnThread_11() {
@@ -176,23 +179,23 @@ public class TestTxnLib extends AbstractTestTxn {
         Txn.executeWrite(unit, ()->{
             counter1.inc();
             // Read the "before" state
-            ThreadAction t = ThreadTxn.threadTxnRead(unit, ()->{ long z1 = 
counter1.get(); assertEquals("Thread read", x1, z1) ; }) ;
+            ThreadAction t = ThreadTxn.threadTxnRead(unit, ()->{ long z1 = 
counter1.get(); assertEquals(x1, z1, "Thread read") ; }) ;
             counter1.inc();
             t.run();
         });
         long x2 = counter1.get();
-        assertEquals("after", x1+2, x2);
+        assertEquals(x1+2, x2, "after");
     }
 
     @Test public void libTxnThread_12() {
         long x1 = counter1.get();
         ThreadAction t = ThreadTxn.threadTxnRead(unit, () -> {
             long z1 = counter1.get();
-            assertEquals("Thread", x1, z1);
+            assertEquals(x1, z1, "Thread");
         });
         Txn.executeWrite(unit, ()->counter1.inc());
         t.run();
         long x2 = counter1.get();
-        assertEquals("after::", x1+1, x2);
+        assertEquals(x1+1, x2, "after::");
     }
 }
diff --git 
a/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestTxnLib2.java
 
b/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestTxnLib2.java
index 30bd5e6dac..31e817edcd 100644
--- 
a/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestTxnLib2.java
+++ 
b/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestTxnLib2.java
@@ -18,16 +18,16 @@
 
 package org.apache.jena.dboe.transaction;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
 import org.apache.jena.atlas.lib.Pair;
 import org.apache.jena.dboe.base.file.Location;
-import org.apache.jena.system.Txn;
 import org.apache.jena.dboe.transaction.txn.TransactionCoordinator;
-
-import static org.junit.Assert.*;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
+import org.apache.jena.system.Txn;
 
 /** Unusual ways to do things.
  *  Rather than a TransactionalComponent,
@@ -38,13 +38,13 @@ public class TestTxnLib2 {
     private final long InitValue = 7;
     TransactionalInteger integer;
 
-    @Before public void setup() {
+    @BeforeEach public void setup() {
         TransactionCoordinator coord = 
TransactionCoordinator.create(Location.mem());
         integer = new TransactionalInteger(coord, InitValue);
         coord.start();
     }
 
-    @After public void clearup() {
+    @AfterEach public void clearup() {
         integer.shutdown();
     }
 
diff --git 
a/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestTxnSwitching.java
 
b/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestTxnSwitching.java
index e69a795737..e18337e6b5 100644
--- 
a/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestTxnSwitching.java
+++ 
b/jena-db/jena-dboe-transaction/src/test/java/org/apache/jena/dboe/transaction/TestTxnSwitching.java
@@ -18,20 +18,23 @@
 
 package org.apache.jena.dboe.transaction;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.fail;
+
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import org.apache.jena.dboe.base.file.Location;
-import org.apache.jena.system.Txn;
 import org.apache.jena.dboe.transaction.txn.*;
 import org.apache.jena.dboe.transaction.txn.journal.Journal;
 import org.apache.jena.query.ReadWrite;
 import org.apache.jena.query.TxnType;
 import org.apache.jena.system.ThreadAction;
 import org.apache.jena.system.ThreadTxn;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
+import org.apache.jena.system.Txn;
 
 /** Tests of changing the thread state ... carefully */
 public class TestTxnSwitching {
@@ -46,10 +49,10 @@ public class TestTxnSwitching {
         txnMgr.start();
     }
 
-    @Before public void setup() {
+    @BeforeEach public void setup() {
     }
 
-    @After public void clearup() {
+    @AfterEach public void clearup() {
     }
 
     @Test public void txnSwitch_01() {
@@ -175,19 +178,17 @@ public class TestTxnSwitching {
     }
 
     // Some error cases.
-    @Test(expected=TransactionException.class)
+    @Test
     public void txnSwitch_10() {
         transactional.begin(ReadWrite.READ);
         TransactionCoordinatorState txnState = transactional.detach();
         transactional.attach(txnState);
-        transactional.attach(txnState);
+        assertThrows(TransactionException.class, 
()->transactional.attach(txnState));
     }
-    @Test(expected=TransactionException.class)
+    @Test
     public void txnSwitch_11() {
         transactional.begin(ReadWrite.READ);
         TransactionCoordinatorState txnState1 = transactional.detach();
-        TransactionCoordinatorState txnState2 = transactional.detach();
+        assertThrows(TransactionException.class, ()->transactional.detach());
     }
-
 }
-
diff --git a/jena-db/pom.xml b/jena-db/pom.xml
index a8783932e4..6fa68707a2 100644
--- a/jena-db/pom.xml
+++ b/jena-db/pom.xml
@@ -62,12 +62,6 @@
       <scope>test</scope>
     </dependency>
 
-    <dependency>
-      <groupId>org.junit.vintage</groupId>
-      <artifactId>junit-vintage-engine</artifactId>
-      <scope>test</scope>
-    </dependency>
-
     <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-slf4j2-impl</artifactId>

Reply via email to