Skip to content

Commit

Permalink
Migrate to JUnit 5
Browse files Browse the repository at this point in the history
  • Loading branch information
amanteaux committed Nov 8, 2024
1 parent 595129a commit 873d2e2
Show file tree
Hide file tree
Showing 26 changed files with 199 additions and 154 deletions.
6 changes: 3 additions & 3 deletions plume-conf/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -36,16 +36,16 @@
</dependency>

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</dependencies>


<dependencyManagement>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package com.coreoz.plume.conf;

import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.Assert.fail;

import org.junit.Test;
import static org.assertj.core.api.Fail.fail;

import com.typesafe.config.Config;

import org.junit.jupiter.api.Test;

public class ConfigProviderTest {

@Test
Expand All @@ -16,7 +16,7 @@ public void check_that_the_configuration_is_correctly_loaded() {
assertThat(config.getString("generic.property")).isEqualTo("Text property");
assertThat(config.getIntList("generic.to-be-overriden")).containsExactly(4, 5);
}

@Test
public void check_that_failed_include_raises_exception() {
try {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,18 @@
import java.time.temporal.ChronoUnit;
import java.util.List;

import com.coreoz.plume.db.guice.GuiceTest;
import jakarta.inject.Inject;

import org.assertj.core.api.Assertions;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.jupiter.api.Test;

import com.carlosbecker.guice.GuiceModules;
import com.carlosbecker.guice.GuiceTestRunner;
import com.coreoz.plume.db.querydsl.DbQuerydslTestModule;
import com.coreoz.plume.db.querydsl.db.QUser;
import com.coreoz.plume.db.querydsl.db.User;
import com.coreoz.plume.db.querydsl.db.UserDao;

@RunWith(GuiceTestRunner.class)
@GuiceModules(DbQuerydslTestModule.class)
@GuiceTest(DbQuerydslTestModule.class)
public class CrudDaoQuerydslTest {

@Inject
Expand Down
Original file line number Diff line number Diff line change
@@ -1,27 +1,22 @@
package com.coreoz.plume.db.querydsl.crud;

import static org.assertj.core.api.Assertions.assertThat;

import java.sql.SQLException;

import jakarta.inject.Inject;
import javax.sql.DataSource;

import org.junit.Test;
import org.junit.runner.RunWith;

import com.carlosbecker.guice.GuiceModules;
import com.carlosbecker.guice.GuiceTestRunner;
import com.coreoz.plume.db.guice.GuiceTest;
import com.coreoz.plume.db.querydsl.DbQuerydslTestModule;
import com.coreoz.plume.db.querydsl.db.User;
import com.coreoz.plume.db.querydsl.db.UserDao;
import com.coreoz.plume.db.querydsl.transaction.TransactionInstancesHolder;
import jakarta.inject.Inject;
import org.junit.jupiter.api.Test;

import javax.sql.DataSource;
import java.sql.SQLException;

import static org.assertj.core.api.Assertions.assertThat;

/**
* Ensure that transaction management behave as expected for daos
*/
@RunWith(GuiceTestRunner.class)
@GuiceModules(DbQuerydslTestModule.class)
@GuiceTest(DbQuerydslTestModule.class)
public class CrudDaoQuerydslTransactionTest {

@Inject
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.querydsl.core.types.Order;
import org.junit.Test;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;

import static org.assertj.core.api.Assertions.assertThat;

Expand Down Expand Up @@ -108,28 +109,32 @@ public void fetch_page_with_page_size_larger_than_total_results_should_return_al
assertThat(page.hasMore()).isFalse(); // No more items because page size exceeds total results
}

@Test(expected = IllegalArgumentException.class)
@Test
public void fetch_page_with_invalid_negative_page_number_should_throw_exception() {
SqlPaginatedQuery
.fromQuery(
transactionManagerQuerydsl.selectQuery()
.select(QUser.user)
.from(QUser.user)
)
.withSort(QUser.user.name, Order.ASC)
.fetchPage(-1, 10); // Invalid negative page number
Assertions.assertThatThrownBy(() -> {
SqlPaginatedQuery
.fromQuery(
transactionManagerQuerydsl.selectQuery()
.select(QUser.user)
.from(QUser.user)
)
.withSort(QUser.user.name, Order.ASC)
.fetchPage(-1, 10); // Invalid negative page number
}).isOfAnyClassIn(IllegalArgumentException.class);
}

@Test(expected = IllegalArgumentException.class)
@Test
public void fetch_page_with_invalid_negative_page_size_should_throw_exception() {
SqlPaginatedQuery
.fromQuery(
transactionManagerQuerydsl.selectQuery()
.select(QUser.user)
.from(QUser.user)
)
.withSort(QUser.user.name, Order.ASC)
.fetchPage(1, -10); // Invalid negative page size
Assertions.assertThatThrownBy(() -> {
SqlPaginatedQuery
.fromQuery(
transactionManagerQuerydsl.selectQuery()
.select(QUser.user)
.from(QUser.user)
)
.withSort(QUser.user.name, Order.ASC)
.fetchPage(1, -10); // Invalid negative page size
}).isOfAnyClassIn(IllegalArgumentException.class);
}

@Test
Expand Down
Original file line number Diff line number Diff line change
@@ -1,22 +1,17 @@
package com.coreoz.plume.db.querydsl.transaction;

import static org.assertj.core.api.Assertions.assertThat;

import java.sql.SQLException;

import com.coreoz.plume.db.guice.GuiceTest;
import com.coreoz.plume.db.querydsl.DbQuerydslTestModule;
import com.coreoz.plume.db.querydsl.db.QUser;
import jakarta.inject.Inject;
import javax.sql.DataSource;
import org.junit.jupiter.api.Test;

import org.junit.Test;
import org.junit.runner.RunWith;
import javax.sql.DataSource;
import java.sql.SQLException;

import com.carlosbecker.guice.GuiceModules;
import com.carlosbecker.guice.GuiceTestRunner;
import com.coreoz.plume.db.querydsl.DbQuerydslTestModule;
import com.coreoz.plume.db.querydsl.db.QUser;
import static org.assertj.core.api.Assertions.assertThat;

@RunWith(GuiceTestRunner.class)
@GuiceModules(DbQuerydslTestModule.class)
@GuiceTest(DbQuerydslTestModule.class)
public class TransactionManagerQuerydslTest {

@Inject
Expand Down
30 changes: 10 additions & 20 deletions plume-db-test/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -19,16 +19,21 @@
<artifactId>guice</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</dependency>

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
Expand All @@ -42,22 +47,7 @@
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>

<dependency>
<groupId>com.carlosbecker</groupId>
<artifactId>guice-junit-test-runner</artifactId>
<exclusions>
<exclusion>
<artifactId>guice</artifactId>
<groupId>com.google.inject</groupId>
</exclusion>
<exclusion>
<artifactId>javax.inject</artifactId>
<groupId>javax.inject</groupId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
</dependencies>

<dependencyManagement>
<dependencies>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.coreoz.plume.db.guice;

import com.google.inject.Module;
import org.junit.jupiter.api.extension.ExtendWith;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
* Make a unit test be injected by Guice
*/
@ExtendWith(GuiceTestRunner.class)
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface GuiceTest {
/**
* The Guice modules used to execute the tests
*/
Class<? extends Module>[] value();
/**
* If the injector created for the modules should be reused in other tests (or use the already created injector)
*/
boolean cacheInjector() default true;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package com.coreoz.plume.db.guice;

import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.Module;
import lombok.SneakyThrows;
import org.junit.jupiter.api.extension.BeforeTestExecutionCallback;
import org.junit.jupiter.api.extension.ExtensionContext;

import java.util.Arrays;
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap;

public class GuiceTestRunner implements BeforeTestExecutionCallback {
private static final Map<String, Injector> injectorCache = new ConcurrentHashMap<>();

@SneakyThrows
@Override
public void beforeTestExecution(ExtensionContext context) throws Exception {
Optional<Object> test = context.getTestInstance();

if (test.isPresent()) {
GuiceTest guiceTest = test.get().getClass().getAnnotation(GuiceTest.class);

if (guiceTest != null) {
Injector injector = computeInjector(guiceTest);
injector.injectMembers(test.get());
}
}
}

private static Injector computeInjector(GuiceTest guiceTest) {
if (guiceTest.cacheInjector()) {
return injectorCache.computeIfAbsent(Arrays.toString(guiceTest.value()), cacheKey -> createInjector(guiceTest.value()));
}
return createInjector(guiceTest.value());
}

private static Injector createInjector(Class<? extends Module>[] modules) {
return Guice.createInjector(Arrays.stream(modules).map(clazz -> {
try {
return clazz.getDeclaredConstructor().newInstance();
} catch (Exception e) {
throw new RuntimeException(e);
}
}).toArray(Module[]::new));
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.coreoz.plume.db.pagination;

import org.assertj.core.api.Assertions;
import org.junit.Test;
import org.junit.jupiter.api.Test;

import java.util.List;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.coreoz.plume.db.pagination;

import org.junit.Test;
import org.junit.jupiter.api.Test;

import static org.assertj.core.api.Assertions.assertThat;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.coreoz.plume.db.pagination;

import org.assertj.core.api.Assertions;
import org.junit.Test;
import org.junit.jupiter.api.Test;

import java.util.List;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,8 @@

import javax.sql.DataSource;

import org.junit.Test;

import com.typesafe.config.ConfigFactory;
import org.junit.jupiter.api.Test;

public class HikariDataSourcesTest {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
import java.sql.Connection;

import com.zaxxer.hikari.HikariDataSource;
import org.junit.Test;

import com.typesafe.config.ConfigFactory;
import org.junit.jupiter.api.Test;

public class TransactionManagerTest {

Expand Down
Loading

0 comments on commit 873d2e2

Please sign in to comment.