我们说我们有以下测试代码:
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运行测试失败?
答案 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中的刷新按钮。