Gradle构建忽略了Jetbrains注释

时间:2018-01-30 08:36:39

标签: java gradle intellij-idea

我们说我们有以下测试代码:

import org.jetbrains.annotations.NotNull;
import org.junit.Test;

public class NullTest {

  @Test
  public void testNull() {
    doNothing(null);
  }

  private @NotNull String doNothing(@NotNull String value) {
    return value;
  }
}

直接运行gradle test或者IDEA将操作委托给gradle时,测试将通过。 但如果它使用IDEA运行器(未委托给gradle)运行,它将失败IllegalArgumentException: Argument for @NotNull parameter 'value' must not be null异常。

问题是:如何使用gradle运行测试失败?

4 个答案:

答案 0 :(得分:2)

我找到的最简单的解决方案是应用org.jetbrains.intellij插件。 因为这个插件“补丁编译任务以使用可空性断言来编写代码”。

  apply plugin: 'org.jetbrains.intellij'

  intellij {
    instrumentCode = true
    downloadSources = false
  }

答案 1 :(得分:0)

使用此代码 - 没办法,因为您使用org.jetbrains.annotations。*中的注释,仅在intellij idea test runner中使用。对于gradle,注释@NotNull(或@Nullable)什么也没说。 Maven也没有看到这个注释。我建议你使用Objects.requireNonNull(T obj)进行空检查。

答案 2 :(得分:-1)

尝试将以下内容添加到您的依赖项中。它对我有用。

compile 'org.jetbrains:annotations:13.0'

答案 3 :(得分:-1)

添加以下依赖项对我有用:

compile group: 'org.jetbrains', name: 'annotations', version: '15.0'

运行“依赖项”任务并按Gradle中的刷新按钮。