diff --git a/core/src/test/java/google/registry/model/EntityTestCase.java b/core/src/test/java/google/registry/model/EntityTestCase.java index 15c20703e..4d88050b3 100644 --- a/core/src/test/java/google/registry/model/EntityTestCase.java +++ b/core/src/test/java/google/registry/model/EntityTestCase.java @@ -42,22 +42,22 @@ import java.util.Set; import org.joda.time.DateTime; import org.junit.Before; import org.junit.Rule; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.extension.RegisterExtension; /** Base class of all unit tests for entities which are persisted to Datastore via Objectify. */ -@RunWith(JUnit4.class) public abstract class EntityTestCase { protected FakeClock fakeClock = new FakeClock(DateTime.now(UTC)); - @Rule + @Rule @RegisterExtension public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().withClock(fakeClock).build(); - @Rule public InjectRule inject = new InjectRule(); + @Rule @RegisterExtension public InjectRule inject = new InjectRule(); @Before + @BeforeEach public void injectClock() { inject.setStaticField(Ofy.class, "clock", fakeClock); } diff --git a/core/src/test/java/google/registry/model/domain/DomainBaseSqlTest.java b/core/src/test/java/google/registry/model/domain/DomainBaseSqlTest.java index 8083db54b..e7c7bc7d2 100644 --- a/core/src/test/java/google/registry/model/domain/DomainBaseSqlTest.java +++ b/core/src/test/java/google/registry/model/domain/DomainBaseSqlTest.java @@ -28,20 +28,17 @@ import google.registry.model.domain.secdns.DelegationSignerData; import google.registry.model.eppcommon.AuthInfo.PasswordAuth; import google.registry.model.eppcommon.StatusValue; import javax.persistence.EntityManager; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; /** Verify that we can store/retrieve DomainBase objects from a SQL database. */ -@RunWith(JUnit4.class) public class DomainBaseSqlTest extends EntityTestCase { DomainBase domain; Key contactKey; Key contact2Key; - @Before + @BeforeEach public void setUp() { contactKey = Key.create(ContactResource.class, "contact_id1"); contact2Key = Key.create(ContactResource.class, "contact_id2"); diff --git a/core/src/test/java/google/registry/model/registry/RegistryLockDaoTest.java b/core/src/test/java/google/registry/model/registry/RegistryLockDaoTest.java index c2a2209a5..3b9d0ceb6 100644 --- a/core/src/test/java/google/registry/model/registry/RegistryLockDaoTest.java +++ b/core/src/test/java/google/registry/model/registry/RegistryLockDaoTest.java @@ -31,18 +31,15 @@ import google.registry.testing.AppEngineRule; import google.registry.testing.FakeClock; import java.util.Optional; import org.joda.time.Duration; -import org.junit.Rule; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; /** Unit tests for {@link RegistryLockDao}. */ -@RunWith(JUnit4.class) public final class RegistryLockDaoTest { private final FakeClock fakeClock = new FakeClock(); - @Rule + @RegisterExtension public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().withClock(fakeClock).build(); diff --git a/core/src/test/java/google/registry/schema/registrar/RegistrarDaoTest.java b/core/src/test/java/google/registry/schema/registrar/RegistrarDaoTest.java index b1bbe2847..82222ed29 100644 --- a/core/src/test/java/google/registry/schema/registrar/RegistrarDaoTest.java +++ b/core/src/test/java/google/registry/schema/registrar/RegistrarDaoTest.java @@ -23,20 +23,17 @@ import google.registry.model.EntityTestCase; import google.registry.model.registrar.Registrar; import google.registry.model.registrar.RegistrarAddress; import google.registry.persistence.VKey; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; -/** Unit tests for {@link RegistrarDao}. */ -@RunWith(JUnit4.class) +/** Unit tests for persisting {@link Registrar} entities. */ public class RegistrarDaoTest extends EntityTestCase { private final VKey registrarKey = VKey.createSql(Registrar.class, "registrarId"); private Registrar testRegistrar; - @Before + @BeforeEach public void setUp() { testRegistrar = new Registrar.Builder() diff --git a/core/src/test/java/google/registry/schema/server/LockDaoTest.java b/core/src/test/java/google/registry/schema/server/LockDaoTest.java index 853c857ab..dd3717278 100644 --- a/core/src/test/java/google/registry/schema/server/LockDaoTest.java +++ b/core/src/test/java/google/registry/schema/server/LockDaoTest.java @@ -19,28 +19,25 @@ import static google.registry.testing.LogsSubject.assertAboutLogs; import com.google.common.testing.TestLogHandler; import google.registry.persistence.transaction.JpaTestRules; -import google.registry.persistence.transaction.JpaTestRules.JpaIntegrationWithCoverageRule; +import google.registry.persistence.transaction.JpaTestRules.JpaIntegrationWithCoverageExtension; import google.registry.testing.FakeClock; import java.util.Optional; import java.util.logging.Level; import java.util.logging.Logger; import org.joda.time.Duration; -import org.junit.Rule; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; /** Unit tests for {@link Lock}. */ -@RunWith(JUnit4.class) public class LockDaoTest { private final FakeClock fakeClock = new FakeClock(); private final TestLogHandler logHandler = new TestLogHandler(); private final Logger loggerToIntercept = Logger.getLogger(LockDao.class.getCanonicalName()); - @Rule - public final JpaIntegrationWithCoverageRule jpaRule = - new JpaTestRules.Builder().withClock(fakeClock).buildIntegrationWithCoverageRule(); + @RegisterExtension + public final JpaIntegrationWithCoverageExtension jpa = + new JpaTestRules.Builder().withClock(fakeClock).buildIntegrationWithCoverageExtension(); @Test public void save_worksSuccessfully() { diff --git a/core/src/test/java/google/registry/schema/tld/PremiumListDaoTest.java b/core/src/test/java/google/registry/schema/tld/PremiumListDaoTest.java index de02586c6..b0ad16a33 100644 --- a/core/src/test/java/google/registry/schema/tld/PremiumListDaoTest.java +++ b/core/src/test/java/google/registry/schema/tld/PremiumListDaoTest.java @@ -34,19 +34,16 @@ import java.math.BigDecimal; import java.util.Optional; import org.joda.money.CurrencyUnit; import org.joda.money.Money; -import org.junit.Ignore; -import org.junit.Rule; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; /** Unit tests for {@link PremiumListDao}. */ -@RunWith(JUnit4.class) public class PremiumListDaoTest { private final FakeClock fakeClock = new FakeClock(); - @Rule + @RegisterExtension public final AppEngineRule appEngine = AppEngineRule.builder().withDatastoreAndCloudSql().withClock(fakeClock).build(); @@ -124,7 +121,7 @@ public class PremiumListDaoTest { // TODO(b/147246613): Un-ignore this. @Test - @Ignore + @Disabled public void update_throwsWhenListDoesntExist() { IllegalArgumentException thrown = assertThrows( diff --git a/core/src/test/java/google/registry/schema/tld/ReservedListDaoTest.java b/core/src/test/java/google/registry/schema/tld/ReservedListDaoTest.java index 5ebaa877e..5e76df7bd 100644 --- a/core/src/test/java/google/registry/schema/tld/ReservedListDaoTest.java +++ b/core/src/test/java/google/registry/schema/tld/ReservedListDaoTest.java @@ -20,23 +20,20 @@ import static google.registry.persistence.transaction.TransactionManagerFactory. import com.google.common.collect.ImmutableMap; import google.registry.model.registry.label.ReservationType; import google.registry.persistence.transaction.JpaTestRules; -import google.registry.persistence.transaction.JpaTestRules.JpaIntegrationWithCoverageRule; +import google.registry.persistence.transaction.JpaTestRules.JpaIntegrationWithCoverageExtension; import google.registry.schema.tld.ReservedList.ReservedEntry; import google.registry.testing.FakeClock; -import org.junit.Rule; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; /** Unit tests for {@link ReservedListDao}. */ -@RunWith(JUnit4.class) public class ReservedListDaoTest { private final FakeClock fakeClock = new FakeClock(); - @Rule - public final JpaIntegrationWithCoverageRule jpaRule = - new JpaTestRules.Builder().withClock(fakeClock).buildIntegrationWithCoverageRule(); + @RegisterExtension + public final JpaIntegrationWithCoverageExtension jpa = + new JpaTestRules.Builder().withClock(fakeClock).buildIntegrationWithCoverageExtension(); private static final ImmutableMap TEST_RESERVATIONS = ImmutableMap.of( diff --git a/core/src/test/java/google/registry/schema/tmch/ClaimsListDaoTest.java b/core/src/test/java/google/registry/schema/tmch/ClaimsListDaoTest.java index 1b2db21bb..368c75818 100644 --- a/core/src/test/java/google/registry/schema/tmch/ClaimsListDaoTest.java +++ b/core/src/test/java/google/registry/schema/tmch/ClaimsListDaoTest.java @@ -18,22 +18,19 @@ import static com.google.common.truth.Truth.assertThat; import com.google.common.collect.ImmutableMap; import google.registry.persistence.transaction.JpaTestRules; -import google.registry.persistence.transaction.JpaTestRules.JpaIntegrationWithCoverageRule; +import google.registry.persistence.transaction.JpaTestRules.JpaIntegrationWithCoverageExtension; import google.registry.testing.FakeClock; -import org.junit.Rule; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; /** Unit tests for {@link ClaimsListDao}. */ -@RunWith(JUnit4.class) public class ClaimsListDaoTest { private final FakeClock fakeClock = new FakeClock(); - @Rule - public final JpaIntegrationWithCoverageRule jpaRule = - new JpaTestRules.Builder().withClock(fakeClock).buildIntegrationWithCoverageRule(); + @RegisterExtension + public final JpaIntegrationWithCoverageExtension jpa = + new JpaTestRules.Builder().withClock(fakeClock).buildIntegrationWithCoverageExtension(); @Test public void trySave_insertsClaimsListSuccessfully() { diff --git a/core/src/test/java/google/registry/testing/InjectRule.java b/core/src/test/java/google/registry/testing/InjectRule.java index d8dccd097..71c4ba2b0 100644 --- a/core/src/test/java/google/registry/testing/InjectRule.java +++ b/core/src/test/java/google/registry/testing/InjectRule.java @@ -22,6 +22,8 @@ import java.util.HashSet; import java.util.List; import java.util.Set; import javax.annotation.Nullable; +import org.junit.jupiter.api.extension.AfterEachCallback; +import org.junit.jupiter.api.extension.ExtensionContext; import org.junit.rules.ExternalResource; /** @@ -44,9 +46,10 @@ import org.junit.rules.ExternalResource; * to be evil; but hopefully one day we'll be able to delete this class and do things * properly with Dagger dependency injection. * - *

You use this class by declaring it as a {@link org.junit.Rule @Rule} field and then - * calling {@link #setStaticField} from either your {@link org.junit.Test @Test} or {@link - * org.junit.Before @Before} methods. For example: + *

This class temporarily supports both JUnit4 and JUnit5. You use this class in JUnit4 by + * declaring it as a {@link org.junit.Rule @Rule} field and then calling {@link + * #setStaticField} from either your {@link org.junit.Test @Test} or {@link org.junit.Before + * @Before} methods. For example: * *

  * // Doomsday.java
@@ -85,7 +88,7 @@ import org.junit.rules.ExternalResource;
  * @see google.registry.util.NonFinalForTesting
  * @see org.junit.rules.ExternalResource
  */
-public class InjectRule extends ExternalResource {
+public class InjectRule extends ExternalResource implements AfterEachCallback {
 
   private static class Change {
     private final Field field;
@@ -140,6 +143,11 @@ public class InjectRule extends ExternalResource {
     injected.add(field);
   }
 
+  @Override
+  public void afterEach(ExtensionContext context) throws Exception {
+    after();
+  }
+
   @Override
   protected void after() {
     RuntimeException thrown = null;