Assertions.assertThrows return 无效,但必须 return Throwable | JUnit 5
Assertions.assertThrows returns void while it must return Throwable | JUnit 5
我正在使用 JUnit 5
库,我尝试使用 assertThrows 并抛出异常以获取异常消息。我有这样一段代码:
import org.junit.jupiter.api.Assertions;
//import org.junit.Assert;
import org.junit.jupiter.api.Test;
import java.util.ArrayList;
import java.util.Arrays;
import static org.junit.jupiter.api.Assertions.*;
public class Tests {
private static void execute() throws Exception {
ArrayList<String> filter = ListString.filter(new ArrayList<String>(Arrays.asList("1", "2", "3")), "4");
}
@Test
public void listStringTest() {
// This part doesn't work
Throwable throwable = Assertions.assertThrows(Exception.class, Tests::execute);
assertEquals("Exception texnt", throwable.getMessage());
}
}
我收到以下消息:
但是 documentation 说断言抛出 returns T extends Throwable
,而不是 void
:
我哪里弄错了?
您的类路径中可能有一个非常旧版本的 JUnit Jupiter。
里程碑版本 5.0.0-M3(2016 年 11 月,release notes)将 return 类型添加到 assertThrows
。您的类路径中的版本似乎比那个版本旧。
确保您使用的是最新版本的 JUnit。
我找到了解决办法。原来我用的是老版本的JUNIT Jupiter
.
我的 build.gradle
文件中有这样的依赖项:
dependencies {
testCompile 'org.junit.jupiter:junit-jupiter-api:5.0.0-M2'
}
当我将它们更新为 the newest version 时:
dependencies {
testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.5.2'
}
它按预期工作。
我正在使用 JUnit 5
库,我尝试使用 assertThrows 并抛出异常以获取异常消息。我有这样一段代码:
import org.junit.jupiter.api.Assertions;
//import org.junit.Assert;
import org.junit.jupiter.api.Test;
import java.util.ArrayList;
import java.util.Arrays;
import static org.junit.jupiter.api.Assertions.*;
public class Tests {
private static void execute() throws Exception {
ArrayList<String> filter = ListString.filter(new ArrayList<String>(Arrays.asList("1", "2", "3")), "4");
}
@Test
public void listStringTest() {
// This part doesn't work
Throwable throwable = Assertions.assertThrows(Exception.class, Tests::execute);
assertEquals("Exception texnt", throwable.getMessage());
}
}
我收到以下消息:
但是 documentation 说断言抛出 returns T extends Throwable
,而不是 void
:
我哪里弄错了?
您的类路径中可能有一个非常旧版本的 JUnit Jupiter。
里程碑版本 5.0.0-M3(2016 年 11 月,release notes)将 return 类型添加到 assertThrows
。您的类路径中的版本似乎比那个版本旧。
确保您使用的是最新版本的 JUnit。
我找到了解决办法。原来我用的是老版本的JUNIT Jupiter
.
我的 build.gradle
文件中有这样的依赖项:
dependencies {
testCompile 'org.junit.jupiter:junit-jupiter-api:5.0.0-M2'
}
当我将它们更新为 the newest version 时:
dependencies {
testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.5.2'
}
它按预期工作。