From 9c2d96ccd73da271f99c148c429505d1def46000 Mon Sep 17 00:00:00 2001 From: shapirov103 Date: Sat, 27 Jun 2020 13:13:28 -0400 Subject: [PATCH 1/2] Loading JDBC driver unit test --- .../jdbc/JdbcDriverLoadingUnitTest.java | 72 +++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 persistence-modules/core-java-persistence/src/test/java/com/baeldung/jdbc/JdbcDriverLoadingUnitTest.java diff --git a/persistence-modules/core-java-persistence/src/test/java/com/baeldung/jdbc/JdbcDriverLoadingUnitTest.java b/persistence-modules/core-java-persistence/src/test/java/com/baeldung/jdbc/JdbcDriverLoadingUnitTest.java new file mode 100644 index 0000000000..77b6bef4eb --- /dev/null +++ b/persistence-modules/core-java-persistence/src/test/java/com/baeldung/jdbc/JdbcDriverLoadingUnitTest.java @@ -0,0 +1,72 @@ +package com.baeldung.jdbc; + +import static org.junit.Assert.*; + +import org.junit.Before; +import org.junit.Test; + +import java.sql.Driver; +import java.sql.DriverManager; +import java.sql.SQLException; + +public class JdbcDriverLoadingUnitTest { + + @Before + public void setup() throws SQLException { + if(!org.postgresql.Driver.isRegistered()) { + org.postgresql.Driver.register(); + } + } + /** + * Driver is registered automatically with the service provider mechanism. + */ + @Test + public void givenJdbcDriverWithSP_whenGettingDriver_thenDriverIsReturned() throws SQLException { + Driver driver = getDriver(); + assertNotNull("Expected initialized postgres driver", driver); + } + + /** + * Driver is registered automatically, then deregistered. + * @throws SQLException + */ + @Test(expected = SQLException.class) + public void givenRegisteredJdbcDriver_whenDeregister_thenNoDriverIsReturned() throws SQLException { + Driver driver = getDriver(); + DriverManager.deregisterDriver(driver); + driver = getDriver(); + assertNull(driver); + } + + /** + * Driver is automatically by the JVM, then deregistered, then registered again. + * @throws SQLException + * @throws ClassNotFoundException + */ + @Test + public void givenNoRegisteredDriver_whenClassForName_thenDriverIsReturned() throws SQLException, ClassNotFoundException { + deregisterDriver(); + + Driver driver = null; + try { + driver = getDriver(); + } + catch (SQLException e) { + // expected + } + assertNull("Must fail on attempt to get a deregistered driver", driver); + + org.postgresql.Driver.register(); // This is invoked as part of Class.forName() logic + + driver = getDriver(); + assertNotNull("Driver must register as part of class loading", driver); + } + + private void deregisterDriver() throws SQLException { + org.postgresql.Driver.deregister(); + } + + private Driver getDriver() throws SQLException { + return DriverManager.getDriver("jdbc:postgresql:"); + } +} From 16171e95d35688b3ea959f09e5cdf856e3424dc0 Mon Sep 17 00:00:00 2001 From: shapirov103 Date: Thu, 2 Jul 2020 23:40:28 -0400 Subject: [PATCH 2/2] addressing code review comments --- .../java/com/baeldung/jdbc/JdbcDriverLoadingUnitTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/persistence-modules/core-java-persistence/src/test/java/com/baeldung/jdbc/JdbcDriverLoadingUnitTest.java b/persistence-modules/core-java-persistence/src/test/java/com/baeldung/jdbc/JdbcDriverLoadingUnitTest.java index 77b6bef4eb..387c050285 100644 --- a/persistence-modules/core-java-persistence/src/test/java/com/baeldung/jdbc/JdbcDriverLoadingUnitTest.java +++ b/persistence-modules/core-java-persistence/src/test/java/com/baeldung/jdbc/JdbcDriverLoadingUnitTest.java @@ -13,7 +13,7 @@ public class JdbcDriverLoadingUnitTest { @Before public void setup() throws SQLException { - if(!org.postgresql.Driver.isRegistered()) { + if (!org.postgresql.Driver.isRegistered()) { org.postgresql.Driver.register(); } } @@ -58,7 +58,7 @@ public class JdbcDriverLoadingUnitTest { org.postgresql.Driver.register(); // This is invoked as part of Class.forName() logic - driver = getDriver(); + driver = getDriver(); assertNotNull("Driver must register as part of class loading", driver); }