Search code examples
javajunitjunit4junit5

Junit5: Equivalent of @Rule and Expect


I have some code which I have written in old version of jUnit. Now I am trying to migrate.

How to write this in Junit5?

 @Test
  public void testSignatureFailureRuntimeException() throws Exception {
    thrown.expect(java.lang.IllegalArgumentException.class);
    HmacUtil hmacUtil = new HmacUtil(HmacUtil.SignatureAlgorithm.HMAC_SHA1, "");
  }
  @Test
  public void testDeploymentInfoWithEmptyConfig() {
    thrown.expect(NullPointerException.class);
    deploymentId = UUID.randomUUID().toString();
    FunctionDeploymentInfo.FunctionDeploymentInfoBuilder builder = FunctionDeploymentInfo.builder();
    FunctionDeploymentInfo fdi = builder
      .withDeploymentId(deploymentId)
      .withFulfilledBy(this.getClass().getName())
      .forPodTag(MicrodoseConstants.ONE_DATA)
      .withConfig(new JsonObject())
      .build();

    LocalMap<String, FunctionDeploymentInfo> deploymentInfo = vertx.sharedData().getLocalMap(deploymentInfoKey);
    deploymentInfo.clear();
    LocalMap<String, String> addressIndex = vertx.sharedData().getLocalMap(addressIndexKey);
    addressIndex.clear();

    fdi.registerDeploymentInfo(addressIndex, deploymentInfo);
  }

And another is @Rule


@ExtendWith(VertxExtension.class)
public class FunctionDeploymentInfoTest {

  @Rule
  public ExpectedException thrown = ExpectedException.none();

Solution

  • With the first one you can try:

        Assertions.assertThrows(IllegalArgumentException.class, () -> new HmacUtil(HmacUtil.SignatureAlgorithm.HMAC_SHA1, ""));
    

    With the second one maybe this will help you: How to replace WireMock @Rule annotation in JUnit 5?