我不确定这是IntelliJ的东西还是Java的东西。
我做了一个实用方法,Assert抛出特定类型的异常:
public static <T, U extends Throwable> Throwable assertThrowsWithCause(
Class<T> expectedOuterExceptionType,
Class<U> expectedInnerExceptionType,
Executable executable) {
Exception outerException = assertThrows(Exception.class, executable);
assertEquals(expectedOuterExceptionType, outerException.getClass());
assertEquals(expectedInnerExceptionType, outerException.getCause().getClass());
return outerException.getCause();
}
它的用法是这样的:
@Test
public void getMeasurementsConfig_configDoesNotExist() {
when(configManager.getConfig(sampleUUID.toString()))
.thenReturn(CompletableFuture.failedFuture(new NotFoundException("")));
assertThrowsWithCause(
CompletionException.class,
NotFoundException.class,
() -> configController
.getMeasurementsConfig(Context.ROOT, sampleRequest)
.toCompletableFuture().join());
}
但是在方法调用上有一个警告:
未引发“assertThrowsWithCause()”的结果
我知道我可以通过添加
@Test
@SuppressWarnings("ThrowableResultOfMethodCallIgnored")
public void ...
在调用方法上。但这意味着我必须将它添加到许多文件中的每个测试中。我如何在全局范围内抑制此警告,以这种方式,它将被抑制的每个人都在项目上工作,* 即 * 不只是在我的本地IntelliJ设置?我试着抑制调用的方法,* 即 *。
@SuppressWarnings("ThrowableResultOfMethodCallIgnored")
public static <T, U extends Throwable> Throwable assertThrowsWithCause(
但这没有产生相同的效果。
1条答案
按热度按时间j8ag8udp1#
这不是来自javac的警告,而是IntelliJ Inspection。检查的名称是“'可扔'不扔”。
您可以使用上下文操作菜单(出现的灯泡)找到检查的名称,然后单击相关上下文操作旁边的三个点:
要在项目范围内禁用它,只需在“设置”中搜索名称并取消选中复选框:
在javac发出警告的情况下,可以向javac传递
-Xlint
选项(参见this answer)。