Junit5:@Rule 和 Expect 的等价物

Junit5: Equivalent of @Rule and Expect

我有一些代码是用旧版本的 jUnit 编写的。现在我正在尝试迁移。

如何在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);
  }

还有一个是@Rule


@ExtendWith(VertxExtension.class)
public class FunctionDeploymentInfoTest {

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

你可以试试第一个:

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

对于第二个,也许这会对您有所帮助: