gpt4 book ai didi

java - 期待 JUnit 的异常不起作用

转载 作者:行者123 更新时间:2023-11-29 04:33:50 25 4
gpt4 key购买 nike

我为我的方法编写了一个 JUnit 测试。
这是我的方法:

   public static int delimit(int value, int min, int max) throws IllegalArgumentException {
if (min > max)
throw new IllegalArgumentException("Min value was greater than max value.");

return Math.min(max, Math.max(min, value));
}

这是测试:

   public class DMathTest extends TestCase {
@Rule
public ExpectedException exception = ExpectedException.none();

@Test
public void testDelimit() {
...

exception.expect(IllegalArgumentException.class);
DMath.delimit(1, 3, 2);
}

}

确实抛出了IllegalArgumentException,但JUnit在测试中将其标记为错误。它告诉我测试失败,因为(预期的)异常。没有 AssertionError 或任何东西,它只是显示我的 IllegalArgumentException,就好像整个期望代码都不存在一样。然后我删除了规则和所有期望代码,结果完全相同(当然,这是应该的)。所以规则和电话

exception.expect(IllegalArgumentException.class);

什么都没做。
我正在使用 Eclipse,我使用 Maven 包含 JUnit。依赖元素如下所示:

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>

我做错了什么?为什么期望异常不起作用?

最佳答案

public class DMathTest extends TestCase {
^^^^^^^^^^^^^^^^

这可能是错误。 TestCase 是 JUnit 3.x API。 JUnit 4.x 测试不再扩展该类,并且可能通过扩展它来改变语义。请删除 extends 子句并重试,否则您的代码看起来是正确的。

此外,在 JUnit 4.x 中,您不再需要使用“testXyz”命名约定。方法名称可以是任何名称,只要该方法是公开的并用 @Test 注释即可。我通常使用“应该”的方法名称,例如“delimitShouldFailIfMinGtMax”。这使得测试报告更具可读性。

关于java - 期待 JUnit 的异常不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42622369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com