Skip to content

Commit 69740f1

Browse files
committed
Drop JUnit 4 usage
1 parent 910b3d6 commit 69740f1

File tree

20 files changed

+685
-629
lines changed

20 files changed

+685
-629
lines changed

hibernate-core/hibernate-core.gradle

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,10 @@ dependencies {
4848
testImplementation project(':hibernate-ant')
4949
testImplementation project(':hibernate-scan-jandex')
5050

51+
// todo : to get rid of these
52+
testImplementation testLibs.junit4
53+
testImplementation testLibs.junit4Engine
54+
5155
testImplementation testLibs.shrinkwrap
5256
testImplementation testLibs.shrinkwrapDescriptors
5357
testImplementation jakartaLibs.cdi

hibernate-envers/hibernate-envers.gradle

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@ dependencies {
2626

2727
testImplementation project( ':hibernate-testing' )
2828

29+
// todo : to get rid of these
30+
testImplementation testLibs.junit4
31+
testImplementation testLibs.junit4Engine
32+
2933
testAnnotationProcessor project( ':hibernate-processor' )
3034
}
3135

hibernate-graalvm/hibernate-graalvm.gradle

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,9 @@ dependencies {
1717

1818
testImplementation project( ':hibernate-core' )
1919
testImplementation libs.jandex
20+
21+
// todo : to get rid of these
22+
testImplementation testLibs.junit4
23+
testImplementation testLibs.junit4Engine
24+
2025
}

hibernate-hikaricp/src/test/java/org/hibernate/test/hikaricp/HikariCPConnectionProviderTest.java

Lines changed: 41 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -13,67 +13,82 @@
1313
import org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.ConnectionProviderJdbcConnectionAccess;
1414
import org.hibernate.engine.jdbc.spi.JdbcServices;
1515
import org.hibernate.hikaricp.internal.HikariCPConnectionProvider;
16+
import org.hibernate.service.spi.ServiceRegistryImplementor;
17+
import org.hibernate.testing.orm.junit.ServiceRegistry;
18+
import org.hibernate.testing.orm.junit.SessionFactory;
19+
import org.hibernate.testing.orm.junit.SessionFactoryScope;
20+
import org.hibernate.testing.orm.junit.SkipForDialect;
21+
import org.junit.jupiter.api.Test;
1622

17-
import org.hibernate.testing.SkipForDialect;
18-
import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase;
19-
import org.junit.Test;
23+
import static org.assertj.core.api.Assertions.assertThat;
24+
import static org.hibernate.testing.orm.junit.ExtraAssertions.assertTyping;
25+
import static org.junit.jupiter.api.Assertions.fail;
2026

21-
import static org.hibernate.testing.junit4.ExtraAssertions.assertTyping;
22-
import static org.junit.Assert.assertFalse;
23-
import static org.junit.Assert.assertNotNull;
24-
import static org.junit.Assert.assertTrue;
25-
import static org.junit.Assert.fail;
2627

2728
/**
2829
* @author Brett Meyer
2930
*/
30-
@SkipForDialect(value = SybaseDialect.class, comment = "The jTDS driver doesn't implement Connection#isValid so this fails")
31-
public class HikariCPConnectionProviderTest extends BaseCoreFunctionalTestCase {
31+
@SuppressWarnings("JUnitMalformedDeclaration")
32+
@SkipForDialect(dialectClass = SybaseDialect.class, reason = "The jTDS driver doesn't implement Connection#isValid so this fails")
33+
@ServiceRegistry
34+
@SessionFactory
35+
public class HikariCPConnectionProviderTest {
3236

3337
@Test
34-
public void testHikariCPConnectionProvider() throws Exception {
35-
JdbcServices jdbcServices = serviceRegistry().getService( JdbcServices.class );
36-
ConnectionProviderJdbcConnectionAccess connectionAccess = assertTyping(
38+
public void testHikariCPConnectionProvider(SessionFactoryScope factoryScope) throws Exception {
39+
var serviceRegistry = factoryScope.getSessionFactory().getServiceRegistry();
40+
var jdbcServices = serviceRegistry.requireService( JdbcServices.class );
41+
var connectionAccess = assertTyping(
3742
ConnectionProviderJdbcConnectionAccess.class,
3843
jdbcServices.getBootstrapJdbcConnectionAccess()
3944
);
40-
assertTyping( HikariCPConnectionProvider.class, connectionAccess.getConnectionProvider() );
45+
var hikariProvider = assertTyping(
46+
HikariCPConnectionProvider.class,
47+
connectionAccess.getConnectionProvider()
48+
);
4149

42-
HikariCPConnectionProvider hikariCP = (HikariCPConnectionProvider) connectionAccess.getConnectionProvider();
4350
// For simplicity's sake, using the following in hibernate.properties:
4451
// hibernate.hikari.minimumPoolSize 2
4552
// hibernate.hikari.maximumPoolSize 2
46-
final List<Connection> conns = new ArrayList<Connection>();
53+
final List<Connection> conns = new ArrayList<>();
4754
for ( int i = 0; i < 2; i++ ) {
48-
Connection conn = hikariCP.getConnection();
49-
assertNotNull( conn );
50-
assertFalse( conn.isClosed() );
55+
Connection conn = hikariProvider.getConnection();
56+
assertThat( conn ).isNotNull();
57+
assertThat( conn.isClosed() ).isFalse();
5158
conns.add( conn );
5259
}
5360

5461
try {
55-
hikariCP.getConnection();
62+
hikariProvider.getConnection();
5663
fail( "SQLException expected -- no more connections should have been available in the pool." );
5764
}
5865
catch (SQLException e) {
5966
// expected
60-
assertTrue( e.getMessage().contains( "Connection is not available, request timed out after" ) );
67+
assertThat( e.getMessage() ).contains( "Connection is not available, request timed out after" );
6168
}
6269

6370
for ( Connection conn : conns ) {
64-
hikariCP.closeConnection( conn );
65-
assertTrue( conn.isClosed() );
71+
hikariProvider.closeConnection( conn );
72+
assertThat( conn.isClosed() ).isTrue();
6673
}
6774

68-
releaseSessionFactory();
75+
// NOTE : The JUnit 5 infrastructure versus the JUnit 4 infrastructure causes the
76+
// StandardServiceRegistry (the SF registry's parent) to be created with auto-closure disabled.
77+
// That is not the normal process.
78+
// So here we explicitly close the parent.
79+
factoryScope.getSessionFactory().close();
80+
serviceRegistry.destroy();
81+
assert serviceRegistry.getParentServiceRegistry() != null : "Expecting parent service registry";
82+
( (ServiceRegistryImplementor) serviceRegistry.getParentServiceRegistry() ).destroy();
83+
6984

7085
try {
71-
hikariCP.getConnection();
86+
hikariProvider.getConnection();
7287
fail( "Exception expected -- the pool should have been shutdown." );
7388
}
7489
catch (Exception e) {
7590
// expected
76-
assertTrue( e.getMessage().contains( "has been closed" ) );
91+
assertThat( e.getMessage() ).contains( "has been closed" );
7792
}
7893
}
7994
}

hibernate-hikaricp/src/test/java/org/hibernate/test/hikaricp/HikariCPSkipAutoCommitTest.java

Lines changed: 50 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -4,91 +4,86 @@
44
*/
55
package org.hibernate.test.hikaricp;
66

7-
import java.sql.Connection;
8-
import java.util.List;
97
import jakarta.persistence.Entity;
108
import jakarta.persistence.Id;
11-
12-
import org.hibernate.cfg.AvailableSettings;
13-
import org.hibernate.cfg.Configuration;
14-
15-
import org.hibernate.testing.SkipForDialect;
16-
import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase;
17-
189
import org.hibernate.dialect.SybaseDialect;
1910
import org.hibernate.orm.test.util.PreparedStatementSpyConnectionProvider;
11+
import org.hibernate.testing.orm.junit.DomainModel;
12+
import org.hibernate.testing.orm.junit.ServiceRegistry;
13+
import org.hibernate.testing.orm.junit.SessionFactory;
14+
import org.hibernate.testing.orm.junit.SessionFactoryScope;
15+
import org.hibernate.testing.orm.junit.Setting;
16+
import org.hibernate.testing.orm.junit.SettingProvider;
17+
import org.hibernate.testing.orm.junit.SkipForDialect;
18+
import org.junit.jupiter.api.AfterAll;
19+
import org.junit.jupiter.api.Test;
2020

21-
import org.junit.Test;
21+
import java.sql.Connection;
22+
import java.util.List;
2223

23-
import static org.hibernate.testing.transaction.TransactionUtil.doInHibernate;
24-
import static org.junit.Assert.assertEquals;
25-
import static org.junit.Assert.assertTrue;
24+
import static org.assertj.core.api.Assertions.assertThat;
25+
import static org.hibernate.cfg.JdbcSettings.CONNECTION_PROVIDER;
26+
import static org.hibernate.cfg.JdbcSettings.CONNECTION_PROVIDER_DISABLES_AUTOCOMMIT;
2627

2728
/**
2829
* @author Vlad Mihalcea
2930
*/
30-
@SkipForDialect(value = SybaseDialect.class, comment = "The jTDS driver doesn't implement Connection#isValid so this fails")
31-
public class HikariCPSkipAutoCommitTest extends BaseCoreFunctionalTestCase {
32-
33-
private PreparedStatementSpyConnectionProvider connectionProvider =
34-
new PreparedStatementSpyConnectionProvider();
35-
36-
@Override
37-
protected void configure(Configuration configuration) {
38-
configuration.getProperties().put(
39-
AvailableSettings.CONNECTION_PROVIDER,
40-
connectionProvider
41-
);
42-
configuration.getProperties().put( AvailableSettings.CONNECTION_PROVIDER_DISABLES_AUTOCOMMIT, Boolean.TRUE );
43-
configuration.getProperties().put( "hibernate.hikari.autoCommit", Boolean.FALSE.toString() );
44-
}
45-
46-
@Override
47-
public void releaseSessionFactory() {
48-
super.releaseSessionFactory();
31+
@SuppressWarnings("JUnitMalformedDeclaration")
32+
@SkipForDialect(dialectClass = SybaseDialect.class, reason = "The jTDS driver doesn't implement Connection#isValid so this fails")
33+
@ServiceRegistry(
34+
settings = {
35+
@Setting( name = CONNECTION_PROVIDER_DISABLES_AUTOCOMMIT, value = "true" ),
36+
@Setting( name = "hibernate.hikari.autoCommit", value = "false" )
37+
},
38+
settingProviders = @SettingProvider( settingName = CONNECTION_PROVIDER, provider = HikariCPSkipAutoCommitTest.ConnectionProviderProvider.class)
39+
)
40+
@DomainModel( annotatedClasses = HikariCPSkipAutoCommitTest.City.class )
41+
@SessionFactory
42+
public class HikariCPSkipAutoCommitTest {
43+
private static final PreparedStatementSpyConnectionProvider connectionProvider = new PreparedStatementSpyConnectionProvider();
44+
45+
@AfterAll
46+
static void afterAll() {
4947
connectionProvider.stop();
5048
}
5149

52-
@Override
53-
protected Class<?>[] getAnnotatedClasses() {
54-
return new Class<?>[] {
55-
City.class,
56-
};
57-
}
58-
5950
@Test
60-
public void test() {
51+
public void testIt(SessionFactoryScope factoryScope) throws Exception {
52+
// force creation of the SF
53+
factoryScope.getSessionFactory();
54+
6155
connectionProvider.clear();
62-
doInHibernate( this::sessionFactory, session -> {
56+
57+
factoryScope.inTransaction( session -> {
6358
City city = new City();
6459
city.setId( 1L );
6560
city.setName( "Cluj-Napoca" );
6661
session.persist( city );
6762

68-
assertTrue( connectionProvider.getAcquiredConnections().isEmpty() );
69-
assertTrue( connectionProvider.getReleasedConnections().isEmpty() );
63+
assertThat( connectionProvider.getAcquiredConnections() ).isEmpty();
64+
assertThat( connectionProvider.getReleasedConnections() ).isEmpty();
7065
} );
7166
verifyConnections();
7267

7368
connectionProvider.clear();
74-
doInHibernate( this::sessionFactory, session -> {
69+
factoryScope.inTransaction( session -> {
7570
City city = session.find( City.class, 1L );
76-
assertEquals( "Cluj-Napoca", city.getName() );
71+
assertThat( city.getName() ).isEqualTo( "Cluj-Napoca" );
7772
} );
7873
verifyConnections();
7974
}
8075

8176
private void verifyConnections() {
82-
assertTrue( connectionProvider.getAcquiredConnections().isEmpty() );
77+
assertThat( connectionProvider.getAcquiredConnections() ).isEmpty();
8378

8479
List<Connection> connections = connectionProvider.getReleasedConnections();
85-
assertEquals( 1, connections.size() );
80+
assertThat( connections ).hasSize( 1 );
8681
try {
8782
List<Object[]> setAutoCommitCalls = connectionProvider.spyContext.getCalls(
8883
Connection.class.getMethod( "setAutoCommit", boolean.class ),
8984
connections.get( 0 )
9085
);
91-
assertTrue( "setAutoCommit should never be called", setAutoCommitCalls.isEmpty() );
86+
assertThat( setAutoCommitCalls ).as( "setAutoCommit should never be called" ).isEmpty();
9287
}
9388
catch (NoSuchMethodException e) {
9489
throw new RuntimeException( e );
@@ -119,4 +114,11 @@ public void setName(String name) {
119114
this.name = name;
120115
}
121116
}
117+
118+
public static class ConnectionProviderProvider implements SettingProvider.Provider<PreparedStatementSpyConnectionProvider> {
119+
@Override
120+
public PreparedStatementSpyConnectionProvider getSetting() {
121+
return connectionProvider;
122+
}
123+
}
122124
}

hibernate-hikaricp/src/test/java/org/hibernate/test/hikaricp/HikariTransactionIsolationConfigTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212

1313
import org.hibernate.test.hikaricp.util.GradleParallelTestingHikariCPConnectionProvider;
1414
import org.hibernate.testing.SkipForDialect;
15-
import org.hibernate.testing.common.connections.BaseTransactionIsolationConfigTest;
15+
import org.hibernate.testing.orm.common.BaseTransactionIsolationConfigTest;
16+
import org.hibernate.testing.orm.junit.ServiceRegistryScope;
1617

1718
/**
1819
* @author Steve Ebersole
@@ -23,7 +24,7 @@
2324
@SkipForDialect(value = GaussDBDialect.class, comment = "GaussDB does not support SERIALIZABLE isolation")
2425
public class HikariTransactionIsolationConfigTest extends BaseTransactionIsolationConfigTest {
2526
@Override
26-
protected ConnectionProvider getConnectionProviderUnderTest() {
27+
protected ConnectionProvider getConnectionProviderUnderTest(ServiceRegistryScope registryScope) {
2728
return new GradleParallelTestingHikariCPConnectionProvider();
2829
}
2930
}

hibernate-integrationtest-java-modules/hibernate-integrationtest-java-modules.gradle

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@ dependencies {
2323
api project( ':hibernate-core' )
2424
api project( ':hibernate-envers' )
2525
implementation project( ':hibernate-scan-jandex' )
26+
27+
// todo : to get rid of these
28+
testImplementation testLibs.junit4
29+
testImplementation testLibs.junit4Engine
30+
2631
//Provide the jakarta.cdi module, as it's required by module jakarta.transaction
2732
//but not provided as transitive dependency of Narayana.
2833
testRuntimeOnly( jakartaLibs.cdi )

hibernate-jcache/src/test/java/org/hibernate/orm/test/jcache/JCacheClasspathConfigUriTest.java

Lines changed: 22 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -4,40 +4,32 @@
44
*/
55
package org.hibernate.orm.test.jcache;
66

7-
import java.util.Map;
87

9-
import org.hibernate.cache.jcache.ConfigSettings;
10-
import org.hibernate.cfg.Environment;
118

12-
import org.hibernate.testing.junit4.BaseNonConfigCoreFunctionalTestCase;
139
import org.hibernate.orm.test.jcache.domain.Product;
14-
import org.junit.Test;
15-
16-
import static org.hibernate.testing.transaction.TransactionUtil.doInHibernate;
17-
18-
public class JCacheClasspathConfigUriTest
19-
extends BaseNonConfigCoreFunctionalTestCase {
20-
21-
@Override
22-
protected void addSettings(Map<String,Object> settings) {
23-
settings.put( Environment.CACHE_REGION_FACTORY, "jcache" );
24-
settings.put( ConfigSettings.CONFIG_URI, "classpath://hibernate-config/ehcache/jcache-ehcache-config.xml" );
25-
}
26-
27-
@Override
28-
protected Class<?>[] getAnnotatedClasses() {
29-
return new Class<?>[]{
30-
Product.class
31-
};
32-
}
33-
10+
import org.hibernate.testing.orm.junit.DomainModel;
11+
import org.hibernate.testing.orm.junit.ServiceRegistry;
12+
import org.hibernate.testing.orm.junit.SessionFactory;
13+
import org.hibernate.testing.orm.junit.SessionFactoryScope;
14+
import org.hibernate.testing.orm.junit.Setting;
15+
import org.junit.jupiter.api.Test;
16+
17+
import static org.hibernate.cache.jcache.ConfigSettings.CONFIG_URI;
18+
import static org.hibernate.cfg.CacheSettings.CACHE_REGION_FACTORY;
19+
20+
@ServiceRegistry(settings = {
21+
@Setting(name=CACHE_REGION_FACTORY, value = "jcache"),
22+
@Setting(name= CONFIG_URI, value = "classpath://hibernate-config/ehcache/jcache-ehcache-config.xml")
23+
})
24+
@DomainModel(annotatedClasses = Product.class)
25+
@SessionFactory
26+
public class JCacheClasspathConfigUriTest {
3427
@Test
35-
public void test() {
36-
Product product = new Product();
37-
product.setName( "Acme" );
38-
product.setPriceCents( 100L );
39-
40-
doInHibernate( this::sessionFactory, session -> {
28+
public void test(SessionFactoryScope factoryScope) {
29+
factoryScope.inTransaction( (session) -> {
30+
Product product = new Product();
31+
product.setName( "Acme" );
32+
product.setPriceCents( 100L );
4133
session.persist( product );
4234
} );
4335
}

0 commit comments

Comments
 (0)